首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不能比较IntPtr.Zero和default(IntPtr)?

为什么不能比较IntPtr.Zero和default(IntPtr)?
EN

Stack Overflow用户
提问于 2012-06-06 22:01:35
回答 1查看 1.3K关注 0票数 6

我刚刚学到了IntPtr.Zero不能与默认(IntPtr)相提并论。有人能告诉我为什么吗?

代码语言:javascript
复制
IntPtr.Zero == new IntPtr(0) -> "could not evaluate expression"
IntPtr.Zero == default(IntPtr) --> "could not evaluate expression"
IntPtr.Zero == (IntPtr)0 -> "could not evaluate expression"

IntPtr.Zero.Equals(IntPtr.Zero) --> "Enum value was out of legal range" exception
IntPtr.Zero.Equals(default(IntPtr)) --> "Enum value was out of legal range" exception

IntPtr.Zero == IntPtr.Zero --> true
new IntPtr(0) == new IntPtr(0) --> true
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-24 19:14:49

适用于VS2010,VS2008,VS2005 SP1,Mono1.2.6的编译代码。我仅在Visual Studio2005的监视窗口中重现了这两个问题(我尝试使用VS2005 SP1),编译后的代码按预期工作。(对于这两个问题,我指的是问题1:“无法计算表达式”,问题2:“枚举值超出合法范围”。)因此,正如一些评论作者所指出的,这是您偶然发现的VS2005 watch window错误。令人惊讶的是,很难快速找到相关错误报告的链接...

否则,在这种情况下,我会从反射开始,看看您尝试比较哪些类型(将Console.Out替换为您有权访问的任何有意义的流):

代码语言:javascript
复制
Console.WriteLine("new IntPtr(0) type is: " + new IntPtr(0).GetType());
Console.WriteLine("IntPtr.Zero type is: " + IntPtr.Zero.GetType());
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10915780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档