ValueType.Equals(Object) Metoda

Definicja

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

Boolean

truejeśli obj i to wystąpienie są tego samego typu i reprezentują tę samą wartość; w przeciwnym razie . false

Przykłady

W poniższym przykładzie pokazano, jak Equals można zastąpić metodę typem 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();
    }
}
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

Uwagi

Metoda ValueType.Equals(Object) zastępuje Object.Equals(Object) i zapewnia domyślną implementację równości wartości dla wszystkich typów wartości w .NET Framework.

Domyślna implementacja wywołuje Object.Equals(Object) każde pole bieżącego wystąpienia i obj zwraca wartość true , jeśli wszystkie pola są równe.

Porada

Szczególnie jeśli typ wartości zawiera pola, które są typami referencyjnymi, należy zastąpić metodę Equals(Object) . Może to poprawić wydajność i umożliwić dokładniejsze przedstawienie znaczenia równości dla typu.

Uwagi dotyczące środowisko wykonawcze systemu Windows

Wywołanie Equals metody w strukturze środowisko wykonawcze systemu Windows zapewnia domyślne zachowanie typów wartości, które nie zastępują Equalselementu . Jest to część wsparcia zapewnianego przez .NET Framework dla środowisko wykonawcze systemu Windows (zobacz .NET Framework pomoc techniczna dla aplikacji ze sklepu Windows i środowisko wykonawcze systemu Windows). środowisko wykonawcze systemu Windows struktury nie mogą zastąpić Equals, nawet jeśli są napisane w języku C# lub Visual Basic, ponieważ nie mogą mieć metod. (Ponadto struktury w samym środowisko wykonawcze systemu Windows nie dziedziczą ValueType.) Wydaje się ToStringjednak, że metody , Equalsi są GetHashCode używane w kodzie języka C# lub Visual Basic, a .NET Framework zapewnia domyślne zachowanie tych metod.

Dotyczy