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

現在のインスタンスと比較するオブジェクト。

戻り値

Boolean

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();
    }
}
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 Framework。

既定の実装では、現在 Object.Equals(Object) のインスタンスの各フィールドで が呼び出され、すべてのフィールドが等しい obj true 場合は が返されます。

ヒント

特に、値型に参照型のフィールドが含まれている場合は、 メソッドをオーバーライドする必要 Equals(Object) があります。 これにより、パフォーマンスが向上し、型の等値の意味をより詳細に表現できます。

Windows ランタイムに関する注意事項

ランタイム構造体で メソッドを呼び出Windows、 をオーバーライドしない値型の既定 Equals の動作を提供します Equals 。 これは、Windows ランタイムに対して .NET Framework が提供するサポートの一部です (「.NET Framework Windows Store Apps と Windows Runtime のサポート」を参照してください)。 Windowsランタイム構造体は、メソッドを持てないので、C# または Visual Basic で記述されている場合でも、 を Equals オーバーライドすることはできません。 (さらに、ランタイム自体Windows構造体は 継承 ValueType されません)。ただし ToString Equals 、C# または Visual Basic コードで使用すると、および メソッドが含み、.NET Framework によってこれらのメソッドの既定の動作が提供されます GetHashCode

適用対象