[英]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.