在.NET中比较两个相同类型的对象

时间:2012-11-23 04:22:49

标签: .net

在.NET中有一种直接的方式来比较两个相同类型的对象。

比较(Object1,Object2)是否可以基于对象属性值的相等性返回bool?

我已经阅读了有关IComparable和IComparer接口的内容,但我正在研究所有属性的比较,而不仅仅是一两个属性。

问候。

2 个答案:

答案 0 :(得分:2)

一般而言,您所描述的是Equals()方法合同的一部分,具体取决于相关课程的详细信息。

每个相关的类都应该根据自己的语义实现Equals。

正式,根据Microsoft文章

http://msdn.microsoft.com/en-us/library/vstudio/336aedhh(v=vs.100).aspx

合同是:

x.Equals(x)返回true。

x.Equals(y)返回与y.Equals(x)相同的值。

(x.Equals(y)&& y.Equals(z))当且仅当x.Equals(z)返回true时返回true。

只要未修改x和y引用的对象,x.Equals(y)的连续调用就会返回相同的值。

x.Equals(null)返回false。

答案 1 :(得分:0)

如果我还可以扩展,你可以覆盖特定类的==和!=运算符。我通常覆盖所有3(等于和2运算符),以便我可以使用单元测试来做某些事情,如

CustomClass customClass1 = new CustomClass("Robert");
CustomClass customClass2 = new CustomClass("Robert");

Assert.IsTrue(customClass1 == customClass2);
Assert.AreEqual(customClass1, customClass2);
如果你问我,

可以提供所有选项。