如何使用数据初始化字典>

本文关键字:列表 何使用 初始化 字典 数据 | 更新日期: 2023-09-27 17:56:05

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

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

并收到以下错误:

无法完全将 void 类型转换为类型 System.Collection.Generic.Dictionary>

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

为什么要编译此语法?

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

如何使用数据初始化字典<T,列表<U>>

你同时做两件事。 表达式的右侧如下所示:

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 语法

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

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

或:

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" }
};

不能在同一语句中创建实例并执行 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"}
  }
};