[英]Visual Studio 2017 - C# - Code Generation - GetHashCode() - Initial Value - Explanation needed
我第一次将代码生成功能用于GetHashCode
。 我认为这是一件好事。 但是我不明白第一行代码。 数字如何计算? 如果我将更多字段添加到GetHashCode
算法(例如,父类的字段),是否需要在代码的第一行中更改此数字?
public override int GetHashCode()
{
var hashCode = 589741190;
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(SyncKey);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Name);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Firstname);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Lastname);
hashCode = hashCode * -1521134295 + EqualityComparer<string>.Default.GetHashCode(Notes);
hashCode = hashCode * -1521134295 + EqualityComparer<DateTime?>.Default.GetHashCode(Birthdate);
return hashCode;
}
大多数情况下,质数用于哈希函数。 但是589741190
不是质数。 我不知道您从哪里获得代码,但是我认为这个数字是随机选择的。 (这并不意味着此数字不利于散列)。
有关此功能的大量信息,请从官方.NET存储库中阅读:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.