3

簡単な質問:object.GetHashCode()再実装されたオブジェクトの値を取得するにはどうすればよいGetHashCode()ですか?

長い話: つまり、私には約10万個のオブジェクトがあり、それぞれが多くの(コンパイル時以外の)共通の文字列を共有しています。値が等しい場合のように一般的で、同じインスタンスです。

それを知っていると、完全な文字列比較ではなく、標準のオブジェクト比較()を使用したいと思いますReferenceEquals。特に、これらはかなり定期的に辞書で検索されるためです。

class ReferenceEqualityComparer : IEqualityComparerだから私は、と一緒に使用することを宣言し、Dictionary<string, TValue>とにかく持っていると便利だと考えて、2つのメソッドを実装しようとします。

Equalsは簡単です。を使用してobject.ReferenceEqualsください。

しかし、どうすればメソッドと同等のものを取得できobject.GetHashCode()ますGetHashCodeか?

つまり、オブジェクトのインスタンスの表現を取得するにはどうすればよいですか?

私はこれを行うことができる他の方法があることを知っています-への参照を保持するが、またはを実装しないクラスを作成するか、InternedString各オブジェクトで文字列ではなくインデックスを格納しますが、私は今興味があります-実際にはありますかジェネリックを実装する方法は?stringEqualsGetHashCodeReferenceEqualityComparer

4

1 に答える 1

3

をご覧くださいRuntimeHelpers.GetHashCode(object)

于 2011-09-14T10:31:43.927 に答える