ValueType.GetHashCode メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このインスタンスのハッシュ コードを返します。
public:
override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer
戻り値
このインスタンスのハッシュ コードである 32 ビット符号付き整数。
例
次の例では、 メソッドを GetHashCode 派生値型でオーバーライドする方法を示します。
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
注釈
メソッドは GetHashCode 、 から ValueType派生した型に適用されます。 戻り値の計算には、派生型の 1 つ以上のフィールドが使用されます。 派生型の GetHashCode
メソッドを呼び出した場合、戻り値はハッシュ テーブルのキーとして使用するのに適していない可能性があります。 また、1 つ以上のフィールドの値が変更されると、戻り値がハッシュ テーブルのキーとして使用できない可能性があります。 どちらの場合も、型のハッシュ コードの GetHashCode 概念をより厳密に表す メソッドの独自の実装を記述することを検討してください。
詳細については、「Object.GetHashCode」および「System.Collections.Hashtable」を参照してください。
Windows ランタイムに関する注意事項
Windows ランタイム構造体で メソッドを呼び出GetHashCodeすと、 をオーバーライドGetHashCodeしない値型の既定の動作が提供されます。 これは、.NET がWindows ランタイムに提供するサポートの一部です (「.NET Support for Windows Store Apps and Windows ランタイム」を参照)。 Windows ランタイム構造体は、メソッドを持つことができないため、C# または Visual Basic で記述されている場合でも、 をオーバーライドGetHashCodeできません。 (さらに、Windows ランタイム自体の構造体は 継承ValueTypeされません)。ただし、C# または Visual Basic コードで使用すると、メソッド 、、および GetHashCode メソッドが含まれているように見えますToStringEquals。.NET では、これらのメソッドの既定の動作が提供されます。
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示