您的位置:首页 > 其它

用委托来实现IEqualityComparer<T>接口

2016-06-06 15:29 330 查看
直接上代码吧。

class FuncEqualityComparer<T> : IEqualityComparer<T>
{
readonly Func<T, T, bool> _comparer;
readonly Func<T, int> _hash;

public FuncEqualityComparer( Func<T, T, bool> comparer )
: this( comparer, t => 0 ) // NB Cannot assume anything about how e.g., t.GetHashCode() interacts with the comparer's behavior
{
}

public FuncEqualityComparer( Func<T, T, bool> comparer, Func<T, int> hash )
{
_comparer = comparer;
_hash = hash;
}

public bool Equals( T x, T y )
{
return _comparer( x, y );
}

public int GetHashCode( T obj )
{
return _hash( obj );
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: