C# 如何制作一个包含多个键的字典,以及一个廉价的包含操作?
基本上,我想做的是一本C# 如何制作一个包含多个键的字典,以及一个廉价的包含操作?,c#,.net,dictionary,key,C#,.net,Dictionary,Key,基本上,我想做的是一本字典。我需要许多指向该值的值(大致草图:),是的,这可以通过字典完成,但我还需要检查是否存在键(基本上-我得到的值是a到Z,我需要找到它们是否是键,如果是,检索与它们相关联的值)通过查看每个列表来查找值似乎是一个非常昂贵的操作(我还没有测试,但我只是觉得这个操作非常昂贵)。我见过多值词典,但没有多键词典。有什么帮助吗?谢谢:)我建议您使用一个简单的字典,它可以将您的键潜在地映射到相同的值。如果您关心的是TValue是一种需要为其所有相关键一致更新的值类型,那么请在其周围使用
字典
。我需要许多指向该值的值(大致草图:),是的,这可以通过字典完成,但我还需要检查是否存在键(基本上-我得到的值是a到Z,我需要找到它们是否是键,如果是,检索与它们相关联的值)通过查看每个列表来查找值似乎是一个非常昂贵的操作(我还没有测试,但我只是觉得这个操作非常昂贵)。我见过多值词典
,但没有多键词典。有什么帮助吗?谢谢:)我建议您使用一个简单的字典
,它可以将您的键潜在地映射到相同的值。如果您关心的是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
}
公共类包装器
{
公共TValue值{get;set;}
}
静态void Main(字符串[]参数)
{
var d=新字典();
d、 添加('A',新包装{Value=1});
d、 Add('B',d['A']);//与'A'相同的值
d、 添加('C',新包装{Value=2});
d、 添加('d',新包装{Value=3});
d、 Add('E',d['d']);//与'd'相同的值
d、 Add('F',d['d']);//与'd'相同的值
d['B'].值--;//将'B'值从'1'递减到'0'
Console.WriteLine(d['A'].Value);//也会为'A'显示新值
}
您可以通过一个底层的还原性,值持有者作为用于间接寻址的私有类来实现它。也许你甚至不需要它,但你可以复制它的值。@Lucastzesniewski这就是我所需要的,谢谢你!这正是我需要的。谢谢:)(将接受3)干杯!为了方便起见,您可以找到包装器实现。