如果我有一个复杂对象,那么编写比较两个实例是否相同的代码的最佳实践模式是什么
实现IEquatable接口。此接口定义了一个通用方法,值类型或类通过实现该方法来创建特定于类型的方法,以确定实例之间的相等性。别忘了同时重写Equals(object)方法。
更多信息请参见:http://msdn.microsoft.com/en-us/library/ms131187.aspx
我认为答案高度取决于具体问题。例如,您可能只想在所有属性都相等的情况下将对象视为相等。这可能是因为每个对象没有唯一标识属性的情况。如果有这样的属性(或属性),比如ID或ID和版本,可以唯一标识该类型的每个对象,则只需基于该属性(或属性)进行比较。
然而,基本模式应该是这样的:
if their references are equal (includes both null)
return true
else if one object is null
return false
else
return value based on relevant properties
既然你提到了一个复杂对象,请确保复杂对象中的所有组合对象都实现了tvanfosson所提到的equals(Object)方法。最后,利用所有组合对象的equals方法来实现复杂对象的equals方法。