在.NET GetHashCode方法中,很多地方都使用.NET 方法.特别是在快速查找集合中的项目或确定相等性时.是否有关于如何GetHashCode为我的自定义类实现覆盖的标准算法/最佳实践,因此我不会降低性能?
我注意到这两个接口,以及几个相关的类,已经在.NET 4中添加了.它们对我来说似乎有点多余; 我已经阅读了几个关于它们的博客,但我仍然无法弄清楚它们在.NET 4之前解决了哪些棘手问题.
什么是使用IStructuralEquatable和IStructuralComparable?
是否有可用的字典.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拥有可以容纳多个密钥的字典?
有一个问题,为什么他们要求使用不可变对象作为字典中的键.
当我最近使用字典(显然不是为了哈希表的目的)将Xml节点对象作为键放置时,问题实际上在我脑海中浮现.然后我在使用期间多次更新节点.
那么'使用不可变密钥'究竟意味着什么呢?
.net ×3
c# ×2
dictionary ×2
algorithm ×1
equality ×1
gethashcode ×1
hashcode ×1
icomparable ×1
immutability ×1
key ×1