如何初始化Dictionary <t,list <u =“”>&gt;有数据

时间:2016-07-08 13:29:37

标签: c#

我正在尝试定义一个变量,如下所示:

Dictionary<string, List<string>> dicData = new Dictionary<string, List<string>>().Add("some key",new List<string> {"some string"});

并收到以下错误:

  

无法实现将void类型转换为type   System.Collection.Generic.Dictionary&GT;

有人可以帮助我理解如何使用内联数据定义字典变量的语法。

为什么这个语法编译?

List<string> lst = new List<string>() { "some String" };

3 个答案:

答案 0 :(得分:2)

你一次做两件事。表达式的右侧看起来像:

new Dictionary<string, List<string>>().Add("some key",new List<string> {"some string"});

您正在创建字典,并立即向其添加项目。 Add返回void,因此您无法以这种方式捕获对字典的引用。您希望首先将字典分配给变量,然后添加到变量中。

甚至更好,您可以使用集合初始值设定项,就像您已使用List

一样
var dicData = new Dictionary<string, List<string>>
              {
                  ["some key"] = new List<string> { "some string"}
              };

上面的代码使用C#6语法

答案 1 :(得分:1)

您无法在同一语句中创建实例并执行void方法,并将结果分配给变量。您必须首先初始化变量,然后执行方法:

Dictionary<string, List<string>> dicData = new Dictionary<string, List<string>>();
dicData.Add("some key",new List<string> {"some string"}):

如果要在初始化时添加项目,可以执行此操作(在C#6,Visual Studio 2015中):

Dictionary<string, List<string>> dicData = new Dictionary<string, List<string>>
{
  {
       "some key",new List<string> {"some string"}
  },
  {
       "some other key",new List<string> {"some other string"}
  }
};

答案 2 :(得分:1)

您有语法错误,在c#6中,您可以执行以下操作:

Dictionary<string, List<string>> dicData = new Dictionary<string, List<string>>()
{
    { "some key", new List<string>() { "some string" } }
};

OR:

Dictionary<string, List<string>> dicData = new Dictionary<string, List<string>>()
{
    ["some key"] = new List<string>() { "some string" },
    ["some key 2"] = new List<string>() { "some string 2" }
};