c# - 如何制作一个具有多个键和廉价的 Contains 操作的字典?

标签 c# .net dictionary key

本质上我想做的是 Dictionary<List<TKey>, TValue> 。我想要许多指向该值的值(粗略的草图: paint skills overwhelming ),是的,这可以可以通过 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/

相关文章:

Python-将键值部分添加到空字典中

c# - ASP.Net Web API Xml 序列化问题

c# - Roslyn,MSBuildWorkspace 编译引用 .NetStandard 项目的 .NetStandard 项目抛出 "No value for RuntimeMetadataVersion found."

c# - 扩展方法解析

c# - NSubstitute - 模拟在返回任务的方法中抛出异常

Python字典按子串赋值

c# - 如何防止 Asp.Net Core 从运行时存储引用依赖项

c# - 如何结合异步调用对进度条进行编程?

来自第二种形式的 C# 'callback'

python - 试图从文件写字典,键变成值