字典<string,list <tuple <string,=“”int =“”>&gt;&gt; dict_Info_A = new Dictionary <string,list <tuple <string,int>&gt;&gt;(); </string,list <tuple <string,int> </string,>

时间:2012-12-03 06:00:20

标签: c# collections dictionary

我使用Dictionary和元组作为参数。

Dictionary<string, List<Tuple<string, int>>> dict_Info_A = 
new Dictionary<string,List<Tuple<string,int>>>();

我无法对其进行初始化,因此会出现令人失望的错误。 请提出一些初始化方法。

提前致谢!

3 个答案:

答案 0 :(得分:2)

这是您使用集合初始值设定项初始化字典的方法:

Dictionary<string, List<Tuple<string, int>>> dict_Info_A = new Dictionary<string, List<Tuple<string, int>>>
{
    { "a", new List<Tuple<string, int>> { new Tuple<string, int>("1", 1) } } 
    { "b", new List<Tuple<string, int>> { new Tuple<string, int>("2", 2) } } 
};

答案 1 :(得分:0)

我想你应该首先决定你需要什么词典

  1. string映射到List<Tuple<string,int>>
  2. 或将string映射到Tuple<string,int>

  3. 使用这行代码

    dict_Info_A.Add("A", new Tuple<string,int>("hello", 1));
    

    您正在尝试使用Dictionary<string, Tuple<string, int>>

    这样的字典应该像这样初始化:

    var dict_Info_A = new Dictionary<string, Tuple<string, int>>();
    

    以下是您在原始问题中显示的词典:

    使用var关键字

    初始化词典
    //you can also omit explicit dictionary declaration and use var instead
    var dict_Info_A = new Dictionary<string, List<Tuple<string, int>>>();
    

    初始化词典的一个元素:

    dict_Info_A["0"] = new List<Tuple<string, int>>();
    

    从字典中添加元素到列表:

    dict_Info_A["0"].Add(new Tuple<string, int>("asd", 1));
    

答案 2 :(得分:0)

你不能使用(评论):

dict_Info_A.Add("A", new Tuple<string,int>("hello", 1));

因为字典需要列表作为值。你可以做类似的事情:

List<Tuple<string,int>> list... // todo...
     // for example: new List<Tuple<string, int>> { Tuple.Create("hello", 1) };
dict_Info_A.Add("A", list);

如果每个键需要多个值,并希望追加到此列表,那么可能:

List<Tuple<string,int>> list;
string key = "A";
if(!dict_Info_A.TryGetValue(key, out list)) {
    list = new List<Tuple<string,int>>();
    dict_Info_A.Add(key, list);
}
list.Add(Tuple.Create("hello", 1));