gpt4 book ai didi

c# - 集合类型的默认相等比较器是什么?

转载 作者:IT王子 更新时间:2023-10-29 04:21:13 26 4
gpt4 key购买 nike

HashSet 的 MSDN API 中它声明没有参数的构造函数

Initializes a new instance of the HashSet class that is empty and uses the default equality comparer for the set type.

集合类型的默认相等比较器是什么,例如自定义类(class)?

顺便说一句:是我的问题还是 MSDN API 文档的解释真的有点单薄?我在阅读时不止一次地遇到过这样的问题。

最佳答案

这意味着它将使用 EqualityComparer<T>.Default 返回的比较器对于元素类型 T的集合。

如文档所述:

The Default property checks whether type T implements theSystem.IEquatable interface and, if so, returns anEqualityComparer that uses that implementation. Otherwise, itreturns an EqualityComparer that uses the overrides ofObject.Equals and Object.GetHashCode provided by T.

因此对于您的自定义类型,它将使用 GetHashCode您定义的用于在集合中定位项目的方法。如果你已经实现了 IEquatable<T>它将使用 IEquatable<T>.Equals(T)为了平等,否则它将使用你的 Equals(object)方法。此方法默认引用 object 中定义的相等性类(class)。因此,如果您使用任一方法定义相等性,则应确保您也覆盖了 GetHashCode

关于c# - 集合类型的默认相等比较器是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17224940/

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