Generic IEqualityComparer and GetHashCode

后端 未结 6 1539
-上瘾入骨i
-上瘾入骨i 2020-12-31 11:01

Being somewhat lazy about implementing lots of IEqualityComparers, and given that I couldn\'t easily edit class implementations of object being compared, I went with the fol

6条回答
  •  佛祖请我去吃肉
    2020-12-31 11:34

    I needed to rewrite Henrik solution as a class implementing IEqualityComparer which gives this:

        public class GenericEqualityComparer : IEqualityComparer
        {
            private readonly Func _keyFunction;
    
            public GenericEqualityComparer(Func keyFunction)
            {
                _keyFunction = keyFunction;
            }
    
            public bool Equals(T x, T y) => EqualityComparer.Default.Equals(_keyFunction(x), _keyFunction(y));
    
            public int GetHashCode(T obj)=> EqualityComparer.Default.GetHashCode(_keyFunction(obj));
        }
    

提交回复
热议问题