本质上我想做的是 Dictionary<List<TKey>, TValue>
。我想要许多指向该值的值(粗略的草图: ),是的,这可以可以通过 Dictionary<List<TKey>, TValue>
来完成,但我还需要检查键是否存在(本质上 - 给定值 A 到 Z,我需要查找它们是否是键,如果是,则检索与它们关联的值)并遍历每个列表以查找值似乎是一个非常昂贵的操作(我还没有测试过,但我只是感觉该操作非常昂贵)。我见过MultiValueDictionary
但不是多键字典。有什么帮助吗?谢谢:)
最佳答案
我建议你选择一个简单的 Dictionary<TKey, TValue>
它将您的键可能映射到相同的值。如果您关心的是TValue
作为一个需要对其所有关联键进行一致更新的值类型,然后在其周围使用类包装器,以便所有所述键都指向同一个实例。
例如:
public class Wrapper<TValue>
{
public TValue Value { get; set; }
}
static void Main(string[] args)
{
var d = new Dictionary<char, Wrapper<int>>();
d.Add('A', new Wrapper<int> { Value = 1 });
d.Add('B', d['A']); // same value as 'A'
d.Add('C', new Wrapper<int> { Value = 2 });
d.Add('D', new Wrapper<int> { Value = 3 });
d.Add('E', d['D']); // same value as 'D'
d.Add('F', d['D']); // same value as 'D'
d['B'].Value--; // decrement 'B' value from '1' to '0'
Console.WriteLine(d['A'].Value); // new value shows up for 'A' too
}
关于c# - 如何制作一个具有多个键和廉价的 Contains 操作的字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32159607/