.net – 为什么我们需要IEqualityComparer,IEqualityComparer接
发布时间:2020-12-15 00:47:42 所属栏目:Java 来源:网络整理
导读:‘Equal’和’GetHashcode’方法存在于对象类中,我们的类型继承了对象基类. 直接实现对象的两个方法和使用IComparer接口有什么不同? 如果我们重写对象的Equal和GetHashCode,并推送到哈希表,它将使用overring的相等方法? 什么是新的哈希表与IEqualityCompar
‘Equal’和’GetHashcode’方法存在于对象类中,我们的类型继承了对象基类.
直接实现对象的两个方法和使用IComparer接口有什么不同? 如果我们重写对象的Equal和GetHashCode,并推送到哈希表,它将使用overring的相等方法? 什么是新的哈希表与IEqualityComparer构造函数的不同之处? 解决方法
当你需要能够“排序”对象时使用IComparable接口,它为你提供了一个方法(CompareTo),它告诉你两个对象是否是<,=或> .使用IEqualityComparer的构造函数允许您提供特定的Equals / GetHashCode,它可以与您的对象定义的不同.通常,Hashtable将使用您的对象重写Equals和GetHashCode(或基础对象Equals和GetHashCode).
举个例子,标准字符串以区分大小写的方式(“A”!=“a”)进行比较,但是你可以使IEqualityComparer助手类能够以不区分大小写的方式对字符串进行散列. (从技术上讲,这个类已经存在多种变体:它们被称为StringComparer.InvariantCultureIgnoreCase和StringComparer的所有其他静态方法,它们返回一个实现IComparer的StringComparer对象,IEqualityComparer,IComparer< string>,IEqualityComparer< string>) 作为注释,Hashtable使用IEqualityComparer可选参数,而不是通用版本IEqualityComparer< T>,因为Hashtable是预先泛型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |