1

GetHashCode 値によって返される値によってオブジェクトを比較する組み込みの IEqualityComparer はありますか? 書くのは簡単ですが、カスタム クラスではなく提供されたクラスを使用したいと思います。

現在のコード:

private class HashComparer : IEqualityComparer<TKey>
{
    private readonly Func<TKey, int> _Hasher;

    public HashComparer (Func<TKey, int> hasher)
    {
        _Hasher = hasher;
    }

    public bool Equals (TKey x, TKey y)
    {
        // null supposed to throw, therefore no check
        return _Hasher (x) == _Hasher (y);
    }

    public int GetHashCode (TKey obj)
    {
        return _Hasher (obj);
    }
}
4

1 に答える 1

4

いいえ、私が知る限り、フレームワークにはそのようなものは存在しません。

それは一般的に悪いことです-ハッシュコードは一意である必要はないため、2 ^ 32以下の可能な値を持つ型と、各値の一意のコード。

私はこれの賢明な使用法を考えるのに苦労しています-フレームワークでそれを見つける可能性が低いのはそのためです. おそらく、非常に特殊な状況で役立つと思うかもしれませんが、それをメインのフレームワークに入れる十分な理由にはなりません。

興味があるので、それで何をしようとしていますか?

于 2009-11-24T09:25:52.527 に答える