我正在使用自定义类作为字典(TKey,TValue)的关键字。该类重写GetHashCode和Equals等。有没有办法使用等效键检索Dictionary键?
我希望能够做的是添加一个键/值对;之后,生成一个等于第一个密钥的新密钥(相同的哈希码,Equals返回true),并且使用此等效密钥不仅可以检索该值,而且还可以检索对第一个已添加的原始密钥的引用到词典。
例子:
var keyA = new KeyClass("abc123");
var keyB = new KeyClass("abc123"); // same as far as dictionary is concerned
var dict = new Dictionary<KeyClass, Object>();
dict.Add(keyA, value);
现在我怎样才能使用KEYB从字典到科亚参考?
这似乎应该很容易做到没有枚举Keys集合,因为Dictionary已经将这些键哈希化了,但是我找不到任何构建到Dictionary类中的东西。我错过了什么吗?现在,我将不得不使用双向字典并进行反向查找,或者(在本例中为我的首选项)“增强”我用于值的类,以便它们存储对原始键的引用。
当“类重写的GetHashCode和平等相待,等” - 怎么可能出问题? ;) –
我不确定你想要达到什么目的?为什么列举键是不够的? –
@MitchWheat在类中实现'IEquatable'时,需要重写这些方法。 http://msdn.microsoft.com/en-us/library/ms131190(v=vs.110).aspx – Smeegs