Apostol Petr Asked:2023-07-31 21:44:34 +0000 UTC2023-07-31 21:44:34 +0000 UTC 2023-07-31 21:44:34 +0000 UTC C# 中的 IEqualityComparer 和 IStructuralEquatable 接口有何用途? 772 我不太明白使用这些接口有什么好处以及在 C# 中可以在哪里使用它们。因此,据我了解,IEqualityComparer 使用基于哈希表的集合,但我不太明白为什么以及它能带来什么好处。我将非常感谢您澄清情况! c# 1 个回答 Voted Best Answer rotabor 2023-08-01T17:20:17Z2023-08-01T17:20:17Z 在我看来,困难在于理解这些接口的用途。在IEqualityComparer链接的帮助中,关键短语是“这与 Dictionary<TKey,TValue> 类和其他泛型集合的 Contains、IndexOf、LastIndexOf 和 Remove 方法一致”。也就是说,这些接口的重点是它们由库类使用,因此必须使用它们来支持标准集合的功能。支持的是可以修改对象的标准类的行为。通过为对象提供自己的 IEqualityComparer 接口实现,我们强制它以我们需要的方式而不是某种标准方式来比较对象。 没有人强迫您在自己的类中使用这些接口,但是使用它们提供了一些有用的标准化。
在我看来,困难在于理解这些接口的用途。在IEqualityComparer链接的帮助中,关键短语是“这与 Dictionary<TKey,TValue> 类和其他泛型集合的 Contains、IndexOf、LastIndexOf 和 Remove 方法一致”。也就是说,这些接口的重点是它们由库类使用,因此必须使用它们来支持标准集合的功能。支持的是可以修改对象的标准类的行为。通过为对象提供自己的 IEqualityComparer 接口实现,我们强制它以我们需要的方式而不是某种标准方式来比较对象。
没有人强迫您在自己的类中使用这些接口,但是使用它们提供了一些有用的标准化。