0

假设我们double在 C# 中有一个值。

是否有可能在不同的计算机/Windows/体系结构上GetHashCode()为此返回不同的整数值?double

    public unsafe override int GetHashCode() {
        double d = m_value; 
        if (d == 0) { 
            // Ensure that 0 and -0 have the same hash code
            return 0; 
        }
        long value = *(long*)(&d);
        return unchecked((int)value) ^ ((int)(value >> 32));
    }
4

1 回答 1

2

Object.GetHashCode 方法说:

GetHashCode 方法的默认实现不保证不同对象的唯一返回值。此外,.NET Framework 不保证 GetHashCode 方法的默认实现,它返回的值在不同版本的 .NET Framework 之间是相同的。因此,此方法的默认实现不得用作散列目的的唯一对象标识符。

于 2017-05-12T11:22:07.253 回答