我想在排隊之前檢查一個對象是否在Queue中。如果不明確定義EqualityComparer,那麼Contains()函數會比較什麼?在沒有EqualityComparer的我的課堂中比較什麼?
如果比較屬性值,那很完美。如果它比較查看隊列中是否存在對該對象的引用,那麼就會在我的代碼中失敗。
我想在排隊之前檢查一個對象是否在Queue中。如果不明確定義EqualityComparer,那麼Contains()函數會比較什麼?在沒有EqualityComparer的我的課堂中比較什麼?
如果比較屬性值,那很完美。如果它比較查看隊列中是否存在對該對象的引用,那麼就會在我的代碼中失敗。
對於類,默認的相等操作是通過引用 - 它假定對象標識和相等性基本相同。
你可以通過覆蓋Equals
和GetHashCode
來解決這個問題。我也建議實施IEquatable<T>
來說明清楚。您的哈希代碼實現應該從與相等操作相同的值生成哈希代碼。
引用類型的默認值是比較引用。
但是,如果類型實現了IEquatable<>
它可以做不同的比較。如果您需要進行特定的平等比較,您需要自己創建一個。