'Equal' 和 'GetHashcode' 方法存在于对象类中,并且我们的类型继承了对象基类。
直接实现对象的两个方法和使用IComparer接口有什么区别?
如果我们覆盖对象的 Equal 和 GetHashCode ,并推送到哈希表,它将使用覆盖的 equal 方法?
new 哈希表与 IEqualityComparer 构造函数有什么区别?
The IComparable
当您需要能够“排序”对象时使用接口,它为您提供了一个方法(CompareTo
) 告诉您两个对象是否是 。使用的构造函数IEqualityComparer
让你给出具体的Equals
/GetHashCode
这可能与您的对象定义的不同。通常情况下Hashtable
将使用您覆盖的对象Equals
and GetHashCode
(或基object
Equals
and GetHashCode
).
举个例子,标准字符串以区分大小写的方式进行比较("A"
!= "a"
),但你可以做一个IEqualityComparer
帮助器类能够以不区分大小写的方式对字符串进行哈希处理。 (从技术上讲,这个类已经存在于多个变体中:它们被称为StringComparer.InvariantCultureIgnoreCase
以及所有其他静态方法StringComparer
返回一个StringComparer
实现的对象IComparer
, IEqualityComparer
, IComparer<string>
, IEqualityComparer<string>
)
作为注释,Hashtable
uses a IEqualityComparer
可选参数,不是通用版本IEqualityComparer<T>
, 因为Hashtable
是预泛型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)