为什么Visual Studio在自动生成GetHashCode时在字符串上使用EqualityComparer

时间:2018-05-03 13:01:24

标签: c# visual-studio-2017 gethashcode

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

cell.imageViewArrow.image = cell.imageViewArrow.image?.imageFlippedForRightToLeftLayoutDirection()

生成此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<>实例方法?是否仅仅是因为默认比较器执行的空检查?

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

0 个答案:

没有答案