ValueType.Equals(Object) 方法

定義

指示這個執行個體和指定的物件是否相等。

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

參數

obj
Object

要與目前執行個體比較的物件。

傳回

如果 true 和這個執行個體為同型別並表示相同的值,則為 obj,否則為 false

範例

下列範例示範如何 Equals 透過衍生實值型別覆寫 方法。

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

備註

方法 ValueType.Equals(Object)Object.Equals(Object) 覆寫 ,併為 .NET 中的所有實值型別提供值相等的默認實作。

預設實作會在目前實體的每個欄位上呼叫 Object.Equals(Object) ,並在 obj 所有欄位都相等時傳 true 回 。

提示

特別是如果您的實值型別包含參考型別的欄位,您應該覆寫 Equals(Object) 方法。 這可以改善效能,並讓您更仔細地表示類型是否相等的意義。

Windows 執行階段 注意事項

當您在 Windows 執行階段 結構上呼叫 Equals 方法時,它會提供未覆寫 Equals之實值型別的默認行為。 這是 .NET 為 Windows 執行階段 (提供的支援一部分,請參閱 Windows 市集應用程式的 .NET 支援和 Windows 執行階段) 。 Windows 執行階段 結構無法覆寫 Equals,即使它們是以 C# 或 Visual Basic 撰寫,因為它們不能有方法。 (此外,Windows 執行階段 本身中的結構不會繼承 ValueType.) 不過,當您在 C# 或 Visual Basic 程式代碼中使用 、 和 方法時,它們似乎具有 ToStringEqualsGetHashCode 方法,而 .NET 會提供這些方法的預設行為。

適用於