IEqualityComparer.Equals(Object, Object) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
确定指定的对象是否相等。
public:
bool Equals(System::Object ^ x, System::Object ^ y);
public bool Equals (object x, object y);
public bool Equals (object? x, object? y);
abstract member Equals : obj * obj -> bool
Public Function Equals (x As Object, y As Object) As Boolean
参数
- x
- Object
要比较的第一个对象。
- y
- Object
要比较的第二个对象。
返回
如果指定的对象相等,则为 true
;否则为 false
。
例外
x
和 y
的类型不同,它们都无法处理与另一个进行的比较。
示例
下面的代码示例演示不区分大小写 IEqualityComparer的实现。 在此示例中, CaseInsensitiveComparer.Compare 方法用于根据提供的 CultureInfo确定两个 对象是否相等。
ref class myCultureComparer : IEqualityComparer
{
private:
CaseInsensitiveComparer^ myComparer;
public:
myCultureComparer()
{
myComparer = CaseInsensitiveComparer::DefaultInvariant;
}
myCultureComparer(CultureInfo^ myCulture)
{
myComparer = gcnew CaseInsensitiveComparer(myCulture);
}
virtual bool Equals(Object^ x, Object^ y)
{
if (myComparer->Compare(x, y) == 0)
{
return true;
}
else
{
return false;
}
}
virtual int GetHashCode(Object^ obj)
{
return obj->ToString()->ToLower()->GetHashCode();
}
};
class myCultureComparer : IEqualityComparer
{
public CaseInsensitiveComparer myComparer;
public myCultureComparer()
{
myComparer = CaseInsensitiveComparer.DefaultInvariant;
}
public myCultureComparer(CultureInfo myCulture)
{
myComparer = new CaseInsensitiveComparer(myCulture);
}
public new bool Equals(object x, object y)
{
return myComparer.Compare(x, y) == 0;
}
public int GetHashCode(object obj)
{
return obj.ToString().ToLower().GetHashCode();
}
}
Public Class myCultureComparer
Implements IEqualityComparer
Dim myComparer As CaseInsensitiveComparer
Public Sub New()
myComparer = CaseInsensitiveComparer.DefaultInvariant
End Sub
Public Sub New(ByVal myCulture As CultureInfo)
myComparer = New CaseInsensitiveComparer(myCulture)
End Sub
Public Function Equals1(ByVal x As Object, ByVal y As Object) _
As Boolean Implements IEqualityComparer.Equals
Return myComparer.Compare(x, y) = 0
End Function
Public Function GetHashCode1(ByVal obj As Object) _
As Integer Implements IEqualityComparer.GetHashCode
Return obj.ToString().ToLower().GetHashCode()
End Function
End Class
注解
实现此方法以提供对象的自定义相等性比较。
实施者说明
方法 Equals(Object, Object) 具有反射性、对称性和可传递性。 也就是说,如果用于将对象与自身进行比较,则返回 true
;对于两个 对象x
,y
如果为 true
y
和 x
,则返回 ;true
对于两个对象x
z
,如果true
为 x
和 y
,则true
返回 y
和 z
。 true
需要实现,以确保如果Equals(Object, Object)方法返回true
两个 对象 x
和 y
,则 方法x
返回GetHashCode(Object)的值必须等于 为 y
返回的值。