首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口如何获取在Object类中定义的Equals和其他方法

问接口如何获取在Object类中定义的Equals和其他方法
EN

Stack Overflow用户
提问于 2009-11-23 17:08:58
回答 2查看 112关注 0票数 1

代码示例:

代码语言:javascript
复制
List<ITest> tests = new List<ITest>();
tests.Add(new Test());
tests.Add(new Test());

Console.WriteLine(tests[0].Equals(tests[1]));

我知道在Java语言中,对象类中的公共实例方法在编译时被插入到接口定义中;这在C#中也是这样吗?

EN

回答 2

Stack Overflow用户

发布于 2009-11-23 17:11:52

在C#中也会发生同样的事情:Equals和GetHashCode是在System.Object类中实现的方法。您自己的类可以-但不总是需要-重写它们。

与Java语言类似,缺省的object实现(对于classes)执行引用相等。也就是说,下面两个对象a和b成立:a.Equals(b)表示object.ReferenceEquals(a, b) (但反之亦然,因为a可以是null)。GetHashCode就是为了匹配这个行为而实现的。

对于struct,情况略有不同:默认情况下,Equals会尝试比较struct中的所有字段是否成对相等。

票数 0
EN

Stack Overflow用户

发布于 2010-08-03 14:32:46

Krishna,虽然您的列表是ITest列表,但您添加的是从System.Object继承的测试对象。尝试覆盖Test对象中的Equals,如果您怀疑这一点,则放入一条日志语句。

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

https://stackoverflow.com/questions/1781914

复制
相关文章

相似问题

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