如果我有一個複雜的對象,編寫代碼以比較兩個實例以查看它們是否相同的最佳實踐模式是什麼比較兩個對象。
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