キーにブール配列を使用する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配列が可変であり、パフォーマンスに関連する派生キーのサイズに関する通常の懸念はすべてここに当てはまります...解決策はありませんが。