Метод RuntimeHelpers.GetHashCode(object) позволяет генерировать хэш-коды на основе идентичности объекта. MSDN состояния:
Метод RuntimeHelpers.GetHashCode всегда вызывает Object.GetHashCode не виртуально, даже если тип объекта имеет переопределил метод Object.GetHashCode.
[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) и как оно работает? Как он вычисляет хэш?
