ValueType.GetHashCode 方法

定義

傳回這個執行個體的雜湊碼。

public:
 override int GetHashCode();
public override int GetHashCode ();
override this.GetHashCode : unit -> int
Public Overrides Function GetHashCode () As Integer

傳回

Int32

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();
    }
}
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 。 使用衍生類型的一或多個欄位來計算傳回值。 如果您呼叫衍生類型的 GetHashCode 方法,則傳回值不太可能適合用來做為雜湊表中的索引鍵。 此外,如果其中一個或多個欄位的值變更,則傳回值可能會不適合用來做為雜湊表中的索引鍵。 無論是哪一種情況,請考慮撰寫您自己的方法,以 GetHashCode 更密切地表示該型別的雜湊碼概念。

如需詳細資訊,請參閱 Object.GetHashCodeSystem.Collections.Hashtable

Windows 執行階段的注意事項

當您 GetHashCode 在 Windows 執行階段結構上呼叫方法時,它會為不會覆寫的實數值型別提供預設行為 GetHashCode 。 這是 .NET Framework 為 Windows 執行階段提供的支援的一部分 (請參閱Windows Store 應用程式 .NET Framework 支援和 Windows 執行階段) 。 Windows 執行階段結構無法覆寫 GetHashCode ,即使它們是使用 c # 或 Visual Basic 撰寫的,因為它們不能有方法。 (此外,Windows 執行階段本身的結構並不會繼承 ValueType 。 ) 不過, ToString Equals GetHashCode 當您在 c # 或 Visual Basic 程式碼中使用它們時,它們看起來會有、和方法,而 .NET Framework 則提供這些方法的預設行為。

適用於