c# – 使用布尔数组作为自定义字典键
发布时间:2020-12-15 04:35:16 所属栏目:百科 来源:网络整理
导读:我试图在C#中创建一个使用布尔数组作为其键的字典. Dictionarybool[],string bool数组的固定长度为1000,并且长度都相同.我遇到了哈希码的问题,并且由于数组的长度,’exclusive或’的常用方法没有那么多意义. StackOverflow上的类似问题通过GetHashCode方法中
我试图在C#中创建一个使用布尔数组作为其键的字典.
Dictionary<bool[],string> bool数组的固定长度为1000,并且长度都相同.我遇到了哈希码的问题,并且由于数组的长度,’exclusive或’的常用方法没有那么多意义. StackOverflow上的类似问题通过GetHashCode方法中的“exclusive or”来解决.我认为这不适用于这种情况.我想用它作为: 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数组的所有常见问题都是可变的,任何派生密钥的大小与性能相关都适用于此……虽然我没有解决方案. 解决方法
您的Equals和HashCode都不正确.
大概你希望使用SequenceEqual比较数组是否相等,或者是一个简单的for循环. 要计算哈希码,您可以使用任何标准方法.非常重要的是,如果两个项目相等,那么它们必须具有相同的散列. 例 public int GetHashCode(bool[] x) { int result = 29; foreach (bool b in x) { if (b) { result++; } result *= 23; } return result; } 有关 > Guidelines and rules for GetHashCode (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Flex builder的调试时需要flash player debug版本
- scanf是否保证不会在失败时更改值?
- Ruby中处理时间的一些基本操作
- xcode – 如何在Swift中弯曲UIView控制器的顶部
- c# – IDependencyResolver是反模式吗?
- Oracle中查看正在运行的SQL进程脚本分享
- 1.8 在控制台输出类的实例及其属性 [Swift原创教程]
- c# – 如何从.NET中具有重复列名的连接表中读取SELECT *的结
- Oracle数据库锁管理及锁分析_超越OCP精通Oracle视频课程培训
- Flex错误1053:verifyerror error #1053 illegal over...