Что делает RuntimeHelpers.GetHashCode

Метод RuntimeHelpers.GetHashCode(object)позволяет генерировать хеш-коды на основе идентификатора объекта. MSDN указывает:

The RuntimeHelpers.GetHashCode method always calls the Object.GetHashCode method non-virtually, even if the object's type has overridden the Object.GetHashCode method.

[MethodImpl(MethodImplOptions.InternalCall)]
[SecuritySafeCritical]
public static extern int GetHashCode(object o);

Однако при проверке метода Object.GetHashCode()с помощью Reflector (.NET 4.0 )мы увидим следующий код:

public virtual int GetHashCode()
{
    return RuntimeHelpers.GetHashCode(this);
}

Это заставляет меня поверить, что документация MSDN неверна, поскольку вызов Object.GetHashCodeиз RuntimeHelpers.GetHashCode(object)вызовет переполнение стека.

Итак, каково фактическое поведение RuntimeHelpers.GetHashCode(object)и как оно работает? Как он вычисляет хэш?

21
задан Steven 28 June 2012 в 07:40
поделиться