小编Vic*_*Vic的帖子

使用布尔数组作为自定义词典键

我试图在C#中创建一个使用布尔数组作为其键的字典.

 Dictionary<bool[], string> 
Run Code Online (Sandbox Code Playgroud)

bool数组的固定长度为1000,并且长度都相同.我遇到了哈希码的问题,并且由于数组的长度,'exclusive或'的常用方法没有那么多意义.

StackOverflow上的类似问题通过GetHashCode方法中的"exclusive or"来解决.我认为这不适用于这种情况.我想用它作为:

 Dictionary<bool[], string> myDict = 
             new Dictionary<bool[], string>(EqualityComparer);
Run Code Online (Sandbox Code Playgroud)

其中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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

当然,关于bool数组的所有常见问题都是可变的,任何派生密钥的大小与性能相关都适用于此......虽然我没有解决方案.

.net c#

6
推荐指数
1
解决办法
1486
查看次数

标签 统计

.net ×1

c# ×1