2009-05-25 17 views
1

HashTableでは、同じ文字列が2つある場合、GetHashCode()関数は最初の文字列を2番目の文字列で上書きするため、キー文字列のハッシュ値は一意です。汎用辞書クラスのキー値

これにより、同じ値を持つ異なる文字列によって生成される同一のハッシュ値が存在しないことが保証されます。

しかし、汎用辞書クラスについては、キーの型パラメータとして任意の型を指定できます。

したがって、そのキーによって生成されたハッシュ値は、文字列の動作を実行しないため、一意にすることはできません。そうですか?

そうでない場合、この一般的なシナリオの背後にある手順は何ですか?事前に

おかげで、

ジェイ...

答えて

3

ハッシュは高速検索の目的のための「バケツ」にアイテムを入れるために使用されます。ハッシュ値は、等価性の判定には使用されません。

2つの文字列(または何でも)が正確に同じハッシュを返すと、実際には同じバケットに入りますが、それらは引き続き別の「キー」になります。

1

ハッシュ値は、すべてのオブジェクトが実装するGetHashCode()によって取得されます。 System.Objectから継承されたデフォルト実装は、異なるオブジェクトに対して一意の戻り値を保証するものではありません。

ただし、ハッシュ値は検索の高速化にのみ使用されるため、オブジェクトが一意である必要はなく、キークラスが同等かどうかを判断するために同等クラスの実装が必要です。

System.Objectをキーとして使用する場合、Object.Equalsを使用してそれを把握するため、参照の平等に基づいて別のキーを認識します。