既定のハッシュ関数として機能します。型と同じまたは小さい範囲の数値のハッシュコードを計算する最も簡単な方法の1つは、単にその値を返すことです。構造体のこのような実装を示しています。2105429592多くの場合、型にはハッシュコードの生成に参加できる複数のデータフィールドがあります。操作を使用してこれらのフィールドを結合することです。対して同じハッシュコードが返されるため、望ましいよりも多くの衝突が発生する可能性があります。これらのケースのハッシュコードが同一でないように、いくつかのソリューションを利用できます。オブジェクトのハッシュコードを返すことです。クラスを使用する実装の例を次に示します。オブジェクトをインスタンス化することによるパフォーマンスのオーバーヘッドによって、ハッシュテーブルに多数のオブジェクトが格納されるアプリケーションの全体的なパフォーマンスに大きな影響を与える可能性があることに注意してください。2692つ目の代替ソリューションでは、連続するフィールドのハッシュコードを2つ以上のビットで左にシフトすることで、個々のハッシュコードを重み付けします。破棄するのではなく、ビット31を超えてシフトされたビットは、破棄されるのではなく、ラップする必要があります。両方C#の左シフト演算子によって破棄されるため、次のような左シフトアンドラップメソッドを作成する必要があります。構造のハッシュコードを計算します。クラスから派生した型など、ハッシュベースのコレクションにオブジェクトを挿入および識別するために使用される数値です。メソッドは、オブジェクトの等価性を簡単にチェックする必要があるアルゴリズムに対して、このハッシュコードを提供します。関数のエントリを参照してください。Wikipedia.等しい2つのオブジェクトが等しい場合は、そのハッシュコードが等しいことを示します。等値のハッシュコードでは、オブジェクトの等価性を意味しません。オブジェクトが同じハッシュコードを持つことができるためです。メソッドの既定の実装を保証しません。実装と、32ビットおよび64ビットプラットフォームなどのプラットフォームで異なる場合があります。このような理由から、このメソッドの既定の実装をハッシュ用の一意のオブジェクト識別子として使用しないでください。これには、次の2つの影響があります。this:等しいハッシュコードでは、オブジェクトの等価性を意味することを想定しないでください。equality.同じオブジェクトがアプリケーションドメイン、プロセス、およびプラットフォーム間でハッシュされる可能性があるため、作成元のアプリケーションドメインの外部でハッシュコードを永続化したり、使用したりしないでください。platforms.警告ハッシュコードは、ハッシュテーブルに基づくコレクション内での効率的な挿入と検索を目的としています。ハッシュコードが永続的な値ではありません。reason:ハッシュコード値をシリアル化したり、データベースに格納したりしないでください。databases.キーとしてハッシュコードを使用して、キー付きコレクションからオブジェクトを取得することは避けてください。collection.アプリケーションドメインまたはプロセス間でハッシュコードを送信しないでください。場合によっては、プロセスごとまたはアプリケーションごとのドメインごとにハッシュコードを計算することがあります。basis.暗号ハッシュ関数によって返される値の代わりにハッシュコードを使用しないでください。暗号化に強力なハッシュが必要な場合に使用します。クラスから派生したクラスを使用します。class.2つのオブジェクトが等しいかどうかを判断するために、ハッシュコードが等しいかどうかをテストしないでください。(等しくないオブジェクトは、同一のハッシュコードを持つことができます)。メソッドを呼び出します。メソッドは、派生型でオーバーライドできます。メソッドを呼び出すことによって計算されます。詳細については、「RuntimeHelpers.GetHashCode」を参照してください。同じハッシュコードを持つことになります。メソッドは、リフレクションを使用して、型のフィールドの値に基づいてハッシュコードを計算します。言い換えると、同じ値を持つフィールドを持つ値型には、同じハッシュコードが含まれます。GetHashCodeのオーバーライドの詳細については、「継承に関する注意事項」を参照してください。メソッドは、2つのオブジェクトに対して同じ値を返す必要があります。実装を指定することで、ハッシュコードプロバイダーを指定できます。メソッドを呼び出すと、GetHashCodeをオーバーライドしないクラスの既定の動作が提供されます。サポート」を参照してください)。GetHashCodeを実装していません。メソッドがあるように見えます。これらのメソッドの既定の動作を提供します。メソッドをオーバーライドできます。すばやく生成するために使用されます。通常、ハッシュ関数はそれぞれの型に固有であり、一意性を確保するには、少なくとも1つのインスタンスフィールドを入力として使用する必要があります。ハッシュコードは、静的フィールドの値を使用して計算することはできません。実装にデリゲートできます。メソッドによって返されるハッシュコードが返されます。オーバーライドできます。オーバーライドする必要があります。-変更できないフィールドからハッシュコードを計算できます。-ハッシュコードに依存するコレクションにオブジェクトが含まれている間は、変更可能なオブジェクトのハッシュコードが変更されないようにすることができます。code.それ以外の場合は、変更可能なオブジェクトがハッシュテーブルで失われると考えられます。オーバーライドする場合、ドキュメントでは、オブジェクトがハッシュテーブルに格納されている間、型のユーザーがオブジェクトの値を変更しないようにする必要があります。リフレクションを使用する既定のハッシュコード実装が用意されています。パフォーマンスを向上させるためにオーバーライドすることを検討してください。performance.さまざまな方法でハッシュコードを計算する詳細と例については、「例」を参照してください。section.ハッシュ関数には、次のプロパティが必要です。メソッドは同じ値を返す必要があります。メソッドは、異なる値を返す必要はありません。メソッドの戻り値を決定する[オブジェクトの状態](xref:System.Object.Equals*)が変更されていない限り、常に同じハッシュコードを返す必要があります。あり、アプリケーションが再実行されると別のハッシュコードが返される可能性があることに注意してください。対して均等な分布を生成する必要があります。暗黙的には、オブジェクトの状態を変更すると、ハッシュテーブルのパフォーマンスが最適になるように、結果のハッシュコードが大幅に変更されることになります。-ハッシュ関数は、コンピューティングのコストを安くする必要があります。メソッドは例外をスローしません。メソッドの実装は、同一の文字列値に対して同一のハッシュコードを返します。オブジェクトが同じ文字列値を表す場合は、同じハッシュコードを返します。入力が特定の範囲内でクラスター化されている場合でも、メソッドは文字列内のすべての文字を使用して、適度にランダムに分散された出力を生成します。文字のみを含む文字列を持つこともできます。文字を含めることができます。クラスに適切なハッシュ関数を指定すると、それらのオブジェクトをハッシュテーブルに追加するときのパフォーマンスに大きく影響することがあります。ハッシュテーブル内の項目の数です)。悪意のあるユーザーがデータを入力すると、衝突の数が増えるため、次のような状況下で、ハッシュテーブルに依存するアプリケーションのパフォーマンスが大幅に低下する可能性があります。-ハッシュ関数が頻繁に衝突を生成する場合。-ハッシュテーブル内のオブジェクトの大部分が、互いに等しいまたはほぼ等しいハッシュコードを生成する場合。-ハッシュコードの計算元のデータをユーザーが入力した場合。オーバーライドして、等しいと見なされる2つのオブジェクトが同じハッシュコードを持つことを保証する必要があります。種類が正しく機能しない可能性があります。correctly.適用対象こちらもご覧くださいHashtableEquals(Object)GetHashCode(Object)このページはお役に立ちましたか?YesNo追加のフィードバックはありますか?スキップ送信ありがとうございます。Cookie利用条件サイトのフィードバック商標このページはお役に立ちましたか?YesNo追加のフィードバックはありますか?スキップ送信ありがとうございます。Cookie利用条件サイトのフィードバック。