在.NET中有一种直接的方式来比较两个相同类型的对象。
比较(Object1,Object2)是否可以基于对象属性值的相等性返回bool?
我已经阅读了有关IComparable和IComparer接口的内容,但我正在研究所有属性的比较,而不仅仅是一两个属性。
问候。
答案 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);
如果你问我,可以提供所有选项。