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