-3

我有以下代码我需要使用 foreach 的 3 个参数:

Dictionary<string, Dictionary<string, Action>>

我尝试过使用 aDictionaryEntry和 aKeyValuePair但他们继续返回 2 个值而不是 3 个。

编辑:我正在尝试使用元组,并且正在尝试将其实现到我的代码中,但我无法访问列表(元素)中的元组。代码:

                    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);
                        }
                    }
4

7 回答 7

3

我同意,你应该在这里尝试使用元组。试试这个代码:

 var foo = new Tuple<string, int, int>("bar", 1, 2);
于 2013-08-09T16:33:28.577 回答
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;
    }
}
于 2013-08-09T15:35:27.357 回答
1

我想你要的是一个元组......?你的问题很模糊,但这里是你如何使用元组。

 var foo = new Tuple<string, int, int, int, int, int, int>(
                       "Bar", 7891957, 7781984, 
                       7894862, 7071639, 7322564, 8008278);

我希望这会有所帮助,但万一这不是您所需要的。您可能需要考虑修改您的问题。

于 2013-08-09T15:31:23.347 回答
0

也许您应该探索使用元组?假设您只有内部字典中的元素,为什么还要在字典中有字典?

于 2013-08-09T15:32:15.037 回答
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
    }
}
于 2013-08-09T15:36:19.013 回答
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("Name2", new KeyValuePair("category2", "description2")); Multiple_Value_List .Add("Name3", new KeyValuePair("category3", "description3"));

于 2017-12-28T09:01:18.500 回答
0

使用元组。这就是为什么。

  1. 你真的想要一个分组项目的列表。这种分组是您需要的关键,因此 TUPLE 提供了这一点。

  2. 字典可以执行您正在寻找的内容,但它会有点复杂,因为您必须嵌套数据结构。

这里的目标是为工作使用正确的数据结构,否则您将增加代码的复杂性,这使得调试变得更加困难,并且让其他人(或您未来的自己)阅读和理解它。

于 2019-01-21T18:30:21.057 回答