很抱歉将两个问题合二为一,它们是相关的。
HashCode
s 代表HashSet
s 等。据我了解,它们必须是唯一的,不能更改,并且将对象的任何配置表示为单个数字。
我的第一个问题是,对于我的对象,包含两个 Int16a
和,我认为返回类似于n 是一个大数的东西b
是否安全?GetHashCode
a * n + b
Math.Pow(2, 16)
也GetHashCode
似乎不灵活地专门返回 Int32 类型。
32bits可以存储,例如两个Int16,一个unicode字符或16个N、S、E、W罗盘方向,数量不多,即使是一些小的节点图也可能太多了。这是否代表 C# Hash 集合的限制?