1

クラス「Dictionary」のようなC#のハッシュマップのキーにこの関数を使用しています。

x、y、z は Int16 です。

public override int GetHashCode()
{
    return (x << 16) | (UInt16)y;
}

これを3つの変数すべてを使用するように拡張するにはどうすればよいですか?


オーバーライドされた System.Object.GetHashCode に最適なアルゴリズムは何ですか? を参照してください。任意の数の任意のタイプの変数を使用する、さらに一般的なケースです。

4

1 に答える 1

1

任意のタイプの 3 つの変数 x、y、z の場合、標準的な方法は次のとおりです。

return x.GetHashCode() ^ y.GetHashCode() ^ z.GetHashCode();

^ は XOR 演算子です。

XOR 演算子を使用して、追加の変数をメソッドに組み込むこともできます。

于 2012-05-27T18:50:31.387 に答える