我有一个这样的词典:如何通过密钥哈希码访问字典?
Dictionary<MyCompositeKey, int>
显然MyCompositeKey
是I类设计它实现IEqualityComparer
并因此具有GetHashCode
方法。
据我所知,词典使用密钥的哈希来访问值,所以这里是我的问题:
虽然我可以通过dict.TryGetValue(new MyCompositeKey(params))
轻松访问的价值,我想摆脱掉new
头顶上的每个访问。
由于这个原因,我想知道是否有一种方法直接从密钥的哈希值(我可以用非常低的开销计算)访问值。
'TKey'(在你的情况下'MyCompositeKey')不应该实现'IEqualityComparer';那是错的。 'MyCompositeKey'应该覆盖'Equals(object)'和'GetHashCode()',否则你应该传递___另一个实现'IEqualityComparer <>'的对象到'Dictionary <,>'构造函数。 –
我可以删除实现并保留'Equals'和'GetHashCode'覆盖。这不会改变我的问题。 – Fylax
对,这只是一个评论,不是对问题的回答。但不要混淆所有类和结构体继承(来自'object')的'GetHashCode()'方法与'IEqualityComparer'中存在的'GetHashCode(T)'方法。 –