相关疑难解决方法(0)

重写System.Object.GetHashCode的最佳算法是什么?

在.NET GetHashCode方法中,很多地方都使用.NET 方法.特别是在快速查找集合中的项目或确定相等性时.是否有关于如何GetHashCode为我的自定义类实现覆盖的标准算法/最佳实践,因此我不会降低性能?

.net algorithm hashcode gethashcode

1389
推荐指数
14
解决办法
19万
查看次数

IStructuralEquatable和IStructuralComparable解决了什么问题?

我注意到这两个接口,以及几个相关的类,已经在.NET 4中添加了.它们对我来说似乎有点多余; 我已经阅读了几个关于它们的博客,但我仍然无法弄清楚它们在.NET 4之前解决了哪些棘手问题.

什么是使用IStructuralEquatableIStructuralComparable

.net equality icomparable iequalitycomparer

55
推荐指数
4
解决办法
7842
查看次数

带有两个键和一个值的.NET字典

是否有可用的字典.NET可以容纳2个键和一个值.喜欢

Dictionary(Of TKey, Of TKey, TValue)
Run Code Online (Sandbox Code Playgroud)

我需要存储两个键,并且在某些时候通过键1来查看项目,而在其他时候通过键2来查看项目.

我目前的解决方案是维护两个词典

Dictionary<string, long> Dict1 = new Dictionary<string, long>();
Dictionary<long, long> Dict2 = new Dictionary<long, long>();
Run Code Online (Sandbox Code Playgroud)

当需要添加项目时,我会将其添加到两个词典中.

Dict1.Add("abc", 111);
Dict2.Add(345, 111);
Run Code Online (Sandbox Code Playgroud)

然后我将从这些字典中的任何一个查找项目,具体取决于我需要查看哪个键.

我在删除或更新项目时也会这样做.

我已经考虑了复合键,但我不知道如何设置它,我不想失去任何搜索项目的速度.

是否有一些解决方案可以.NET拥有可以容纳多个密钥的字典?

.net c# dictionary

37
推荐指数
5
解决办法
2万
查看次数

为什么字典键是不可变的?

有一个问题,为什么他们要求使用不可变对象作为字典中的键.

当我最近使用字典(显然不是为了哈希表的目的)将Xml节点对象作为键放置时,问题实际上在我脑海中浮现.然后我在使用期间多次更新节点.

那么'使用不可变密钥'究竟意味着什么呢?

c# dictionary key immutability

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