ValueType.Equals(Object) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wskazuje, czy to wystąpienie oraz określony obiekt są równe.
public:
override bool Equals(System::Object ^ obj);
public override bool Equals (object obj);
public override bool Equals (object? obj);
override this.Equals : obj -> bool
Public Overrides Function Equals (obj As Object) As Boolean
Parametry
- obj
- Object
Obiekt do porównania z bieżącym wystąpieniem.
Zwraca
true
jeśli obj
i to wystąpienie ma ten sam typ i reprezentują tę samą wartość; w przeciwnym razie wartość false
.
Przykłady
W poniższym przykładzie pokazano, Equals jak metoda może zostać zastąpiona przez typ wartości pochodnej.
public ref struct Complex
{
public:
double m_Re;
double m_Im;
virtual bool Equals( Object^ ob ) override
{
if ( dynamic_cast<Complex^>(ob) )
{
Complex^ c = dynamic_cast<Complex^>(ob);
return m_Re == c->m_Re && m_Im == c->m_Im;
}
else
{
return false;
}
}
virtual int GetHashCode() override
{
return m_Re.GetHashCode() ^ m_Im.GetHashCode();
}
};
public struct Complex
{
public double m_Re;
public double m_Im;
public override bool Equals( object ob ){
if( ob is Complex ) {
Complex c = (Complex) ob;
return m_Re==c.m_Re && m_Im==c.m_Im;
}
else {
return false;
}
}
public override int GetHashCode(){
return m_Re.GetHashCode() ^ m_Im.GetHashCode();
}
}
Public Structure Complex
Private m_Re As Double
Private m_Im As Double
Public Overloads Function Equals(ob As Object) As Boolean
If TypeOf ob Is Complex Then
Dim c As Complex = CType(ob, Complex)
Return m_Re = c.m_Re And m_Im = c.m_Im
Else
Return False
End If
End Function
Public Overloads Function GetHashCode() As Integer
Return m_Re.GetHashCode() ^ m_Im.GetHashCode()
End Function
End Structure
Uwagi
Metoda ValueType.Equals(Object) zastępuje i zapewnia Object.Equals(Object) domyślną implementację równości wartości dla wszystkich typów wartości w .NET Framework.
Domyślna implementacja wywołuje każde pole bieżącego wystąpienia i zwraca wartość , jeśli Object.Equals(Object) obj
wszystkie pola są true
równe.
Porada
Szczególnie jeśli typ wartości zawiera pola, które są typami referencyjnymi, należy zastąpić Equals(Object) metodę . Może to poprawić wydajność i umożliwić bardziej ścisłe reprezentowanie znaczenia równości dla typu.
Uwagi dotyczące środowiska Windows uruchomieniowego
Wywołanie metody w strukturze środowiska uruchomieniowego Windows zapewnia domyślne zachowanie dla typów wartości, które Equals nie zastępują metody Equals . Jest to część obsługi zapewniana przez program .NET Framework dla środowiska Windows Runtime (zobacz .NET Framework Support for Windows Store Apps and Windows Runtime (Obsługa aplikacji ze sklepu Windows Store i środowiska Windows Runtime). Windows środowiska uruchomieniowego nie mogą przesłonić struktury , nawet jeśli są napisane w języku C# lub Visual Basic, ponieważ nie Equals mogą mieć metod. (Ponadto struktury w środowisku uruchomieniowym Windows nie ValueType dziedziczą). Jednak wydają się one mieć metody , i , gdy są one stosowane w kodzie ToString Equals języka C# lub Visual Basic, a metoda .NET Framework domyślne zachowanie dla GetHashCode tych metod.