次の方法で共有


ValueType.Equals メソッド

このインスタンスと指定したオブジェクトが等しいかどうかを示します。

Overrides Public Function Equals( _
   ByVal obj As Object _) As Boolean
[C#]
public override bool Equals(objectobj);
[C++]
public: bool Equals(Object* obj);
[JScript]
public override function Equals(
   obj : Object) : Boolean;

パラメータ

  • obj
    比較対象のもう 1 つのオブジェクト。

戻り値

obj とこのインスタンスが同じ型で、同じ値を表している場合は true 。それ以外の場合は false

解説

Equals メソッドの既定の実装では、リフレクションを使用して、 obj の対応するフィールドとこのインスタンスを比較します。メソッドのパフォーマンスを向上し、その型の等価性の概念をより厳密に表現するには、特定の型の Equals メソッドをオーバーライドします。

使用例

派生した値型で Equals メソッドをオーバーライドする方法を次の例に示します。

 
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

[C#] 
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();
    }
}

[C++] 
public __gc struct Complex {
   double  m_Re;
   double  m_Im;
   bool Equals(Object* ob) {
      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;
      }
   }
   int GetHashCode() {
      return  __box(m_Re)->GetHashCode() ^  __box(m_Im)->GetHashCode();
   }
};

[JScript] 
public class Complex 
{
    public var m_Re : double;
    public var m_Im : double;

    public override function Equals( ob ) : Boolean{
        if( ob.GetType() == Complex ) {
            var c : Complex = Complex(ob);
            return m_Re==c.m_Re && m_Im==c.m_Im;
        }
        else {
            return false;
        }
    }

    public override function GetHashCode() : int{
        return m_Re.GetHashCode() ^ m_Im.GetHashCode();
    }
            
            public static function main() {
                   var x : Complex = new Complex();
                   x.m_Re = 1;
                   x.m_Im = 2;
                   var y : Complex = new Complex();
                   y.m_Re = 2;
                   y.m_Im = 1;
                   
                   Console.Write(x.Equals(y));                       
            }
}

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

ValueType クラス | ValueType メンバ | System 名前空間