IEqualityComparer.Equals(Object, Object) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Определяет, равны ли два указанных объекта.
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
, если используется для сравнения объекта с самим собой; true
для двух объектов x
и y
, если это для true
y
и x
; и true
для двух объектов x
и z
, если это для x
true
и y
, а также true
для y
и z
.
Реализации требуются, чтобы гарантировать, что если Equals(Object, Object) метод возвращает true
для двух объектов x
и y
, то значение, возвращаемое методом для x
, должно равняться значению, возвращаемого GetHashCode(Object) для y
.