首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ReferenceEquals --是真的还是等于--错误的预期行为?

ReferenceEquals --是真的还是等于--错误的预期行为?
EN

Stack Overflow用户
提问于 2012-08-09 16:53:50
回答 2查看 189关注 0票数 3

如果object.ReferenceEquals返回true,那么instance.Equals应该总是返回true吗?

你认为下面的输出是通过/失败时的意外行为吗?

代码语言:javascript
复制
Assert.True(object.ReferenceEquals(obj,obj));
Assert.True(obj.Equals(obj));

就我个人而言,我认为这很奇怪,也不能真正想到一个很好的理由,在那里,一个实例不应该等同于自己。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-09 16:58:03

回答你的问题有两种方法。

  • 是的,这是意想不到的行为。如果正确设计的类从.Equals返回true,那么它应该始终从.ReferenceEquals返回true。这已编入MSDN的“类库开发设计指南”( http://msdn.microsoft.com/en-us/library/336aedhh.aspx文章): 遵循Object.Equals方法上定义的契约,如下所示: x.Equals(x)返回true。
  • 但这种要求并不是由语言或运行时强制执行的。该类的设计人员完全可以自由地将Equals定义为{ return false; }。有悖常理但有可能。
票数 7
EN

Stack Overflow用户

发布于 2012-08-09 16:55:07

是的,如果引用等于真,则正确实现等于应该返回true。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11888259

复制
相关文章

相似问题

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