2010-10-26 72 views
0

我想在排隊之前檢查一個對象是否在Queue中。如果不明確定義EqualityComparer,那麼Contains()函數會比較什麼?在沒有EqualityComparer的我的課堂中比較什麼?

如果比較屬性值,那很完美。如果它比較查看隊列中是否存在對該對象的引用,那麼就會在我的代碼中失敗。

回答

7

對於類,默認的相等操作是通過引用 - 它假定對象標識和相等性基本相同。

你可以通過覆蓋EqualsGetHashCode來解決這個問題。我也建議實施IEquatable<T>來說明清楚。您的哈希代碼實現應該從與相等操作相同的值生成哈希代碼。

0

引用類型的默認值是比較引用。

但是,如果類型實現了IEquatable<>它可以做不同的比較。如果您需要進行特定的平等比較,您需要自己創建一個。

相關問題