我使用自定义类作为Dictionary(TKey,TValue)的键。该类重写GetHashCode和Equals等。
我希望能够做的是添加键/值对;稍后,生成一个等同于第一个键的新键(相同的哈希码,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从Dictionary中获取对keyA的引用?
在没有枚举Keys集合的情况下,这似乎很容易做到,因为Dictionary已经对这些键进行了哈希处理,但是我无法找到Dictionary类中内置的任何内容。我错过了什么吗?现在,我要么必须使用双向字典并进行反向查找,或者(在这种情况下我的偏好)&#34;增强&#34; I类用于表示值,因此它们存储对原始键的引用。
答案 0 :(得分:1)
嗯,@ AD.Net是适当的答案,在覆盖GetHashCode()
和Equals()
public class KeyClass
{
public readonly string key;
public KeyClass(string key)
{
this.key = key;
}
public override bool Equals(object other)
{
if (other == null)
return false;
// Casting object other to type KeyClass
KeyClass obj = other as KeyClass;
if (obj == null)
return false;
return this.key == other.key;
}
public override int GetHashCode()
{
return this.key.GetHashCode();
}
}