【发布时间】:2011-09-06 21:49:04
【问题描述】:
我有一个实现 IEquatable(Type) 的自定义类型 Type。 然后我新建了两个该类型的实例,它们都不是 Null
Assert.IsTrue(obj1.equals(obj2)) //Success
Assert.AreEqual(obj1, obj2) //False
Assert.AreEqual(Type)(obj1, obj2) //False
第一个命中我的等号,第二个命中 ToString() 有什么建议吗?
更新
一些代码来说明:http://pastebin.com/1uecrfeW
更多更新
如果我必须重写基本等于,即使有更好的(通用)等于可用,那么实现 IEquals(T) 有什么用?
【问题讨论】:
-
阅读此IEquatable。一切都在备注中澄清
-
你没有覆盖
Object.Equals -
重新编辑 - 流派版本通常由通用代码使用 - List-of-T 等。另外,由 EqualityComparer-of-T 等使用