gpt4 book ai didi

.net - 为什么 SequenceEqual 采用 IEqualityComparer 而不是谓词?

转载 作者:行者123 更新时间:2023-12-04 21:16:11 25 4
gpt4 key购买 nike

为什么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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com