如果我有一个复杂的对象,编写代码以比较两个实例以查看它们是否相同的最佳实践模式是什么比较两个对象。
Q
比较两个对象。
12
A
回答
15
实现IEquatable接口。这定义了一个值类型或类实现用于确定实例平等创建特定类型的方法的一般化方法。不要忘记重写Equals(对象)。 点击此处了解详情:
2
我想答案是高度依赖的问题。例如,只有当所有属性相等时,才可能考虑对象相同。这可能是每个对象不具有唯一标识属性的情况。如果有这样一个属性(或属性),说的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
需要注意的是,如果你重写Equals操作,你还需要重写GetHashCode(),以便为等效对象的哈希码是相同的。这将确保当对象用作密钥时,使用散列代码来确定重复密钥的数据结构能够正常工作。
0
既然你提到一个复杂的对象,确保由tvanfosson提到的复杂对象的所有复合对象实现equals(对象)。最后落实把所有复合对象
相关问题
- 1. 比较两个对象
- 2. 比较两个JSON对象
- 3. 比较两个对象,java
- 4. 比较两个对象
- 5. 比较两个NSNumber对象
- 6. 比较两个datetime对象
- 7. 比较两个JavaScript对象
- 8. 比较两个DateTimeOffset对象
- 9. Subsonic比较两个对象
- 10. 比较两个Doctrine_Record对象
- 11. 比较两个对象
- 12. 比较两个JSON对象
- 13. 比较两个stdClass对象
- 14. 比较两个Linq对象
- 15. 如何两个对象比较对象
- 16. 比较两个对象的类型Microsoft.AnalysisServices.MajorObject
- 17. 比较两个对象是在MbUnit的
- 18. 比较两个对象集合
- 19. 比较两个Joda-Time DateTime对象
- 20. Nunit 2.5.10 - 无法比较两个对象
- 21. 在anylogic中比较两个对象
- 22. 将两个对象比较为Array;
- 23. 比较两个PHP对象 - PHP和OBJECTS
- 24. 如何比较两个对象数组?
- 25. 比较两个JavaScript对象的键
- 26. 如何比较两个Struct对象?
- 27. 比较两个继承对象Ruby
- 28. 如何比较两个对象数组
- 29. 比较Laravel中的两个对象
- 30. 如何打字比较两个对象?
的平等的优势复杂对象平等是如何从IComparable的 – leora 2009-01-04 16:51:06
此不同IEquatable只会告诉你,如果他们是相同的或没有。 IComparable会给你一个相对的顺序。对于没有排序的对象,但是可以相等(例如,图像),则不能使用IComparable。 – tvanfosson 2009-01-04 16:55:09