0

当我检查一个项目(我的公司代码)时。我看了这个:

public override int GetHashCode()
{
    unchecked
    {
        int result = 17;
        result = result * 23 + ((connection != null) ? this.connection.GetHashCode() : 0);
        return result;
    }
}

其实,我GetHashCode()第一次见到。我跑了一点。但我不明白他们为什么在此代码行中使用它并用于连接?

有什么特殊原因吗?使用 getHashCode 进行连接的逻辑是什么?

谢谢。

4

2 回答 2

2

如果您知道为对象生成快速且分布良好的哈希键的好方法,则应使用 GetHashCode。

当您要将对象存储在字典等中时,这很有用。更好的散列意味着这些数据结构的效率更高。

否则使用基本的 GetHashCode()。这在很多情况下都是次优的。有关将 GetHasCode 覆盖与 Equals 覆盖结合使用的一些详细信息,请参阅;

http://msdn.microsoft.com/en-us/library/ms173147(v=vs.80).aspx

于 2012-09-07T08:26:54.870 回答
1

GetHashCode 可用于快速识别两个实例是否看起来“相同”(不同的哈希码 = 不同的实例;相同的哈希码可能意味着相同的实例)。

显然,“连接”字段对于确定对象的身份很重要。

于 2012-09-07T08:34:01.617 回答