ValueType.GetHashCode Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает хэш-код данного экземпляра.
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();
}
}
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.GetHashCode и System.Collections.Hashtable.
примечания для среда выполнения Windows
при вызове GetHashCode метода для структуры среда выполнения Windows он предоставляет поведение по умолчанию для типов значений, которые не переопределяются GetHashCode . это является частью поддержки, предоставляемой платформа .NET Framework для среда выполнения Windows (см. платформа .NET Framework поддержка Windows приложений магазина и среда выполнения Windows). среда выполнения Windows структуры не могут переопределяться GetHashCode , даже если они написаны с помощью C# или Visual Basic, так как они не могут иметь методы. (кроме того, структуры в самом среда выполнения Windows не наследуют ValueType .) однако они выглядят как ToString Equals методы, и GetHashCode при их использовании в коде C# или Visual Basic, а платформа .NET Framework предоставляет поведение по умолчанию для этих методов.