0

プロジェクトを調べたとき(私の会社コード)。私はこれを見ました:

public override int GetHashCode()
{
    unchecked
    {
        int result = 17;
        result = result * 23 + ((connection != null) ? this.connection.GetHashCode() : 0);
        return result;
    }
}

実はGetHashCode()初めて見ました。私はそれについて少し走りました。しかし、なぜ彼らがこのコード行と接続にそれを使用したのか理解できませんか?

特別な理由はありますか?接続にgetHashCodeを使用するロジックは何ですか?

ありがとう。

4

2 に答える 2

2

オブジェクトの高速で適切に分散されたハッシュキーを生成するための適切な方法を知っている場合は、GetHashCodeを使用する必要があります。

これは、オブジェクトを辞書などに保存する場合に便利です。より良いハッシュは、それらのデータ構造のより良い効率を意味します。

それ以外の場合は、ベースのGetHashCode()が使用されます。多くの場合、これは最適ではありません。GetHasCodeオーバーライドをEqualsオーバーライドと組み合わせて使用​​する方法の詳細については、以下を参照してください。

http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

于 2012-09-07T08:26:54.870 に答える
1

そのGetHashCodeを使用すると、2つのインスタンスが「同じ」ように見えるかどうかをすばやく識別できます(異なるハッシュコード=異なるインスタンス。同じハッシュコードは同じインスタンスを意味する場合があります)。

どうやら、その「接続」フィールドは、オブジェクトのIDを決定する上で重要です。

于 2012-09-07T08:34:01.617 に答える