GetHashCode()仅来自布尔值

本文关键字:布尔值 GetHashCode | 更新日期: 2023-09-27 18:03:27

我有一个不可变的类,它的唯一字段是bool[](大小在运行时确定)。

如何计算该类的哈希码?一般来说,我只会在每个字段上调用GetHashCode(),并将它们与这些操作符之一:+ | &结合起来,但由于唯一可能的哈希码是false0true1,这并不能真正让我得到任何地方。我的实现只需要使用bools,并且必须适用于任意大小的数组。

(可能不太重要,但我是在c#/. net编码。)

GetHashCode()仅来自布尔值

假设您的bool[]命名为bools:

unchecked { 
    int hash = 17;
    for(int index = 0; index < bools.Length; index++) {
        hash = hash * 23 + bools[index].GetHashCode();
    }
    return hash;
}