我正在尝试在 C# 中创建一个使用布尔数组作为其键的字典。
Dictionary<bool[], string>
bool 数组的长度固定为 1000,并且都是相同的长度。我在使用哈希码时遇到问题,并且由于数组的长度,“异或”的常用方法没有多大意义。
StackOverflow 上的类似问题通过 GetHashCode 方法中的“异或”来解决。我认为这在这种情况下是行不通的。我想将其用作:
Dictionary<bool[], string> myDict =
new Dictionary<bool[], string>(EqualityComparer);
其中 EquaityComparer 执行以下操作:
public class EqualityComparer : IEqualityComparer<bool[]>
{
public bool Equals(bool[] x, bool[] y)
{
return x.SequenceEqual(y);
}
public int GetHashCode(bool[] x)
{
// this part doesn't work correctly
int hc = x.GetHashCode();
return hc;
}
}
当然,关于 bool 数组是可变的以及与性能相关的任何派生键的大小的所有常见问题都适用于此……尽管我没有解决方案。