12

HashSet<T>.Netが完全にハッシュコードに基づいているのか、それとも同等性を使用しているのか疑問に思いました。

何百万ものインスタンスをインスタンス化する可能性のある特定のクラスがあり、その時点で一部のハッシュコードが衝突する可能性があります。

このクラスのいくつかのインスタンスを格納するためにHashSetを使用することを検討していて、実際に実行する価値があるかどうか疑問に思っています-要素の一意性がそのハッシュコードでのみ決定される場合、それは実際のアプリケーションでは役に立ちません

MSDNのドキュメントは、このトピックに関してかなり曖昧なようです-どんな啓蒙もいただければ幸いです

4

1 に答える 1

14

いいえ、平等も使用します。定義上、ハッシュコードは一意である必要はありません。ハッシュコードが壊れていると想定するものはすべて壊れています。HashSet<T>賢明です。IEqualityComparer<T>(デフォルトは)を使用してEqualityComparer<T>.Default、ハッシュコード生成と同等性テストの両方を実行します。

于 2010-03-16T14:34:26.547 に答える