我有以下代码我需要使用foreach的3个参数:
Dictionary<string, Dictionary<string, Action>>
我尝试使用DictionaryEntry
和KeyValuePair
,但他们继续返回2个值而不是3个。
编辑: 我试图使用一个元组,我试图将它实现到我的代码中,但我无法访问List(元素)中的元组。 代码:
foreach (List<Tuple<string, string, Action>> element in Classes)
{
if (ActualText.StartsWith(element.Item1))
{
string temp1 = ActualText.TrimStart(element.Item1.ToArray());
if (temp1 == element.Item2)
element.Item3();
else
print("Unknown extension " + temp1);
}
}
答案 0 :(得分:2)
我认为您正在寻找的是:
Dictionary<string, Dictionary<string, Action>> dict;
foreach (var kvp1 in dict)
{
foreach (var kvp2 in kvp1.Value)
{
string key1 = kvp1.Key;
string key2 = kvp2.Key;
Action a = kvp2.Value;
}
}
答案 1 :(得分:2)
我同意,你应该尝试在这里使用元组。试试这段代码:
var foo = new Tuple<string, int, int>("bar", 1, 2);
答案 2 :(得分:1)
我觉得你要的是一个元组......?你的问题很模糊,但这就是你如何使用元组。
var foo = new Tuple<string, int, int, int, int, int, int>(
"Bar", 7891957, 7781984,
7894862, 7071639, 7322564, 8008278);
我希望这会有所帮助,但万一它不是你需要的。您可能需要考虑修改您的问题。
答案 3 :(得分:0)
也许你应该探索使用元组? 为什么你会在字典中有一个字典,假设你只在内部字典中有元素?
答案 4 :(得分:0)
我认为(也许)你正在寻找的是这个
假设mainDictionary是你的
Dictionary<string1, Dictionary<string2, Action>>
我们有
foreach(var dictionary in mainDictionary){
foreach(var item in dictionary.Value){
//dictionary.Key = string1
//item.Key = string2
//item.Value = Action
}
}
答案 5 :(得分:0)
您可以使用多个值创建字典,例如
Dictionary<string, KeyValuePair<string, string>> Multiple_Value_List = new Dictionary<string, KeyValuePair<string, string>>();
并可以添加值
Multiple_Value_List .Add("Name1", new KeyValuePair<string, string>("category1", "description1"));
Multiple_Value_List .Add(&#34; Name2&#34;,new KeyValuePair(&#34; category2&#34;,&#34; description2&#34;)); Multiple_Value_List .Add(&#34; Name3&#34;,new KeyValuePair(&#34; category3&#34;,&#34; description3&#34;));
答案 6 :(得分:0)
使用元组。这就是为什么。
您真的想要一个分组项目的清单。这种分组是您需要的关键,因此TUPLE可以提供。
词典可以执行您要查找的内容,但是由于您必须嵌套数据结构,因此它有点复杂。
这里的目标是为工作使用正确的数据结构,否则您将增加代码的复杂性,从而使调试更加困难,其他人也难以阅读和理解(或您未来的自我) 。