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
されます。
ヒント
特に、値型に参照型のフィールドが含まれている場合は、 メソッドをオーバーライドする Equals(Object) 必要があります。 これにより、パフォーマンスが向上し、型の等価性の意味をより厳密に表すことができます。
Windows ランタイムに関する注意事項
Windows ランタイム構造体で メソッドを呼び出Equalsすと、 をオーバーライドEqualsしない値型の既定の動作が提供されます。 これは、.NET がWindows ランタイムに対して提供するサポートの一部です (「.NET での Windows ストア アプリとWindows ランタイムのサポート」を参照してください)。 Windows ランタイム構造体は、C# または Visual Basic で記述されている場合でも、メソッドを持つことができないため、 をオーバーライドEqualsすることはできません。 (さらに、Windows ランタイム自体の構造体は 継承ValueTypeされません)。ただし、C# または Visual Basic コードで使用すると、メソッドは 、Equals、および GetHashCode のように見ToStringえ、.NET ではこれらのメソッドの既定の動作が提供されます。
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示