IEqualityComparer.Equals(Object, Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Determina se gli oggetti specificati sono uguali.
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
Parametri
- x
- Object
Primo oggetto da confrontare.
- y
- Object
Secondo oggetto da confrontare.
Restituisce
true
se gli oggetti specificati sono uguali; in caso contrario, false
.
Eccezioni
x
e y
sono di tipi diversi e nessuno dei due può gestire confronti con l'altro.
Esempio
Nell'esempio di codice seguente viene illustrata l'implementazione di un oggetto senza distinzione tra maiuscole IEqualityComparere minuscole. In questo esempio viene usato il CaseInsensitiveComparer.Compare metodo per determinare se due oggetti sono uguali, in base all'oggetto specificato 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
Commenti
Implementare questo metodo per fornire un confronto di uguaglianza personalizzato per gli oggetti.
Note per gli implementatori
Il Equals(Object, Object) metodo è riflessivo, simmetrico e transitivo. Ovvero, restituisce se usato per confrontare true
un oggetto con se stesso; true
per due oggetti e se è true
per y
x
true
e ; e per due oggetti x
z
x
e y
se è y
true
x
per e anche true
per y
e .z
Le implementazioni sono necessarie per assicurarsi che se il Equals(Object, Object) metodo restituisce true
per due oggetti x
e y
, il valore restituito dal GetHashCode(Object) metodo per x
deve corrispondere al valore restituito per y
.