gpt4 book ai didi

c# - 为什么 IEqualityComparer 没有相应的委托(delegate),而 IComparer 有比较

转载 作者:行者123 更新时间:2023-12-02 21:44:52 24 4
gpt4 key购买 nike

对于那些接收 IComparer 的扩展方法作为参数,我可以通过方法 Comparer.Create 轻松获取相应的实例创建 IComparer<T>来自Comparison<T> .

同样,如果接口(interface)IEqualityComparer有一个相应的委托(delegate)就好了。 。为什么它不存在?

最佳答案

平等的一般契约是它的行为方式必须与相同的哈希码方法一致:平等表示相等的两个对象必须报告相同的哈希值。因此你无法通过独特的方法提供一致的相等实现。相反,您需要一个包含两种方法(等于和哈希代码)的协定,因此委托(delegate)不足以指定该协定,您需要一个包含两个方法的接口(interface),例如 IEqualityComparer

您可以在以下answer中找到更多原因,它使用 Distinct 方法作为示例。

关于c# - 为什么 IEqualityComparer 没有相应的委托(delegate),而 IComparer 有比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19705976/

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