1

从版本 15.6.7 开始,Visual Studio 2017 用于以下类:

class Contact
{
    public int Id { get; set; }
    public string Name { get; set; }
}

生成此GetHashCode方法(数量不同):

public override int GetHashCode()
{
    var hashCode = 1460282102;
    hashCode = hashCode * -1521134295 + Id.GetHashCode();
    hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);
    return hashCode;
}

为什么使用EqualityComparer<>而不只是通过调用String.GetHashCode()实例方法来检索字符串哈希?仅仅是因为默认比较器执行了空值检查吗?

在我看来,使用相等比较器是一种开销。

4

0 回答 0