[英]C# object comparison
有人可以指出重載operator==
來執行深度對象比較(而不是引用比較)的想法。
來自MSDN:
默認情況下,運算符==通過確定兩個引用是否指示同一對象來測試引用是否相等。 因此,引用類型不必實現運算符==即可獲得此功能。 當類型是不可變的,即實例中包含的數據不能更改時,重載運算符==以比較值相等性而不是引用相等性是有用的,因為作為不可變對象,它們可以被認為與因為它們具有相同的價值。 在非不可變類型中覆蓋運算符==不是一個好主意。
什么時候真正受益?
而且,例如,如果每個對象都有方法Equals
,這使值比較成為可能,那么為什么有人會使用x == y
語句執行值 (而不是引用)比較?
我想我聽不懂什么,因為這對我來說很奇怪。
重載==
運算符使您可以編寫x == y
,它比x.Equals(y)
自然得多,即使x
為null也會起作用。
重載運算符==
僅可提高代碼的可讀性。 始終對定義的類型使用.Equals(),尤其是對於深層對象比較。
System.String
是引用類型的經典示例,它受益於深度值相等比較而不是引用比較。
通常,在某些情況下,它使代碼更易於編寫,並且通過值比較比通過引用比較更好地表示相等性的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.