ValueType.Equals(Object) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger om den här instansen och ett angivet objekt är lika.
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
Parametrar
- obj
- Object
Det objekt som ska jämföras med den aktuella instansen.
Returer
true if obj och den här instansen är av samma typ och representerar samma värde, annars false.
Exempel
I följande exempel visas hur Equals metoden kan åsidosättas av en härledd värdetyp.
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();
}
}
type Complex() =
member val m_Re = 0. with get, set
member val m_Im = 0. with get, set
override this.Equals(ob) =
match ob with
| :? Complex as c ->
this.m_Re = c.m_Re && this.m_Im = c.m_Im
| _ -> false
override this.GetHashCode() =
this.m_Re.GetHashCode() ^^^ this.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
Kommentarer
Metoden ValueType.Equals(Object) åsidosätter Object.Equals(Object) och tillhandahåller standardimplementeringen av värdejämlikhet för alla värdetyper i .NET.
Standardimplementeringen anropar Object.Equals(Object) varje fält i den aktuella instansen och obj returnerar true om alla fält är lika.
.NET 9 och senare utlöser standardimplementeringen av ValueType.Equals(Object)NotSupportedException om InlineArrayAttribute tillämpas på typen.
Important
Särskilt om värdetypen innehåller fält som är referenstyper bör du åsidosätta Equals(Object) metoden. Detta kan förbättra prestanda och göra det möjligt för dig att närmare representera innebörden av likhet för typen.
Anteckningar för Windows Runtime
När du anropar metoden Equals på en Windows Runtime struktur, tillhandahåller den standardbeteendet för värdetyper som inte åsidosätter Equals. Detta är en del av det stöd som .NET tillhandahåller för Windows Runtime (se .NET-stöd för Windows Store-appar och Windows Runtime). Windows Runtime strukturer kan inte åsidosätta Equals, även om de är skrivna med C# eller Visual Basic, eftersom de inte kan ha metoder. (Dessutom ärver inte strukturer i själva Windows Runtime ValueType.) De verkar dock ha ToString, Equals och GetHashCode metoder när du använder dem i C# eller Visual Basic-koden, och .NET tillhandahåller standardbeteendet för dessa metoder.