2010-03-16 46 views
12

我想知道.Net HashSet<T>是完全基於哈希碼還是它使用平等?.NET HashSet唯一性計算是否完全基於哈希碼?

我有一個特殊的類,我可能潛在實例化數百萬個實例,並且有一些合理的機會,在這一點上一些哈希碼會發生碰撞。

我正在考慮使用HashSet來存儲這個類的一些實例,我想知道它是否真的值得做 - 如果一個元素的唯一性只是在它的哈希碼上確定的,那麼這對我來說對於真正的應用程序是沒有用的

MSDN文檔似乎對這個主題相當模糊 - 任何啓發,將不勝感激

回答

14

不,它使用相等。根據定義,哈希碼不需要是唯一的 - 任何假設他們將被破壞。 HashSet<T>是明智的。它使用IEqualityComparer<T>(默認爲EqualityComparer<T>.Default)執行哈希代碼生成和相等性測試。

+1

太棒了 - 這正是我所希望的 - MSDN只是沒有在文檔中說清楚 – RobV 2010-03-16 15:01:15

相關問題