ValueType.Equals(Object) メソッド
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このインスタンスと指定したオブジェクトが等しいかどうかを示します。
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
が返されます。
.NET 9 以降では、InlineArrayAttribute が型に適用されている場合、ValueType.Equals(Object) の既定の実装では NotSupportedException がスローされます。
重要
特に、値型に参照型のフィールドが含まれている場合は、Equals(Object) メソッドをオーバーライドする必要があります。 これにより、パフォーマンスが向上し、型の等価性の意味をより厳密に表すことができます。
Windows ランタイム構造体で Equals メソッドを呼び出すと、Equalsをオーバーライドしない値型の既定の動作が提供されます。 これは、.NET が Windows ランタイムに対して提供するサポートの一部です (Windows ストア アプリと Windows ランタイムの .NET サポート
製品 | バージョン |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 |
UWP | 10.0 |
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。