【发布时间】:2011-09-05 09:25:32
【问题描述】:
在this 示例中,发帖人已经覆盖了获取哈希码方法。我知道这样做是为了为返回的对象提供更好的哈希值,减少冲突的数量,从而减少调用Equals() 的次数。
我想知道的是,这个算法是如何计算出来的:
return 17 + 31 * CurrentState.GetHashCode() + 31 * Command.GetHashCode();
选择相关数字是否有特殊原因?我可以简单地选择我自己的号码来输入吗?
【问题讨论】:
-
仅供参考,MS C# 编译器(用于匿名类型)使用
-1134271262的种子和-1521134295的乘数。只是说' -
@MarcGravell:你有那个来源吗?
-
@DeepSpace101 ILDASM ;p
-
@MarcGravell:我在 ILDASM 中看到了相同的
-1521134295乘数,但seed似乎是一个复合种子(它是一个随机 int32 乘以相同的乘数)。所以种子不仅是 NOT 素数(与流行的看法相反),它也是基于匿名类型成员名称/类型/计数的随机数。诡异的。任何想法为什么? -
@DeepSpace 无。很有趣。
标签: c# algorithm hashcode state-machine