为什么Enumerable.SequenceEqual将其比较器用作IEqualityComparer?该算法似乎没有使用GetHashCode。为什么它不采用Func<TSource, TSource, bool>谓词,类似于First采用Func<TSource, bool>的谓词?

最佳答案

我很想说“因为”。

如果您看看其他类似的方法(例如Enumerable.Distinct),它们也会在重载中使用IEqualityComparer

另外,IEqualityComparer是检查对象是否相等的“正确”方法。 Func<TSource, TSource, bool>不必检查是否相等,它会在此时此刻检查对象是否足够类似于您的特定用法。

幸运的是,创建自己的扩展方法非常容易。例如,MoreLinq是否具有您可以查看的DistinctBy的实现。

关于.net - 为什么SequenceEqual使用IEqualityComparer而不是谓词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23087969/

10-11 01:44