对不起,如果这是基本的话。我对C#有点新,但为什么我不能将词典添加到词典列表中呢?我查找的文档是这样的:
List<Dictionary<string, string>> data = new List<Dictionary<string, string>>();
data.Add(new Dictionary<string, string>() { "test", "" });
答案 0 :(得分:13)
在第二行创建Dictionary<string, string>
时,您没有正确初始化它。
你需要的是:
List<Dictionary<string, string>> data = new List<Dictionary<string, string>>();
data.Add(new Dictionary<string, string>() { {"test", ""} });
这会创建一个新的键/值对并将其添加到Dictionary中。编译器虽然你试图添加一个名为&#34; test&#34;一个叫做#34;&#34;到字典;您无法做到这一点,因为这些添加操作需要一个值和一个键。
答案 1 :(得分:5)
您正在使用集合初始值设定项来获取列表或数组。字典有键和值,因此需要在大括号中包含一组参数:
data.Add(
new Dictionary<string, string>()
{
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" }
}
);
答案 2 :(得分:3)
添加额外的{}
data.Add(new Dictionary<string, string>() { {"test", ""} });
如果没有额外的括号,您尝试添加两个单独的字符串"test"
和""
,而您想要添加键值对。
答案 3 :(得分:2)
行。 “词典列表”可能使问题复杂化。 您只需使用此行获得相同的错误:
var x = new Dictionary<string, string>() { "test", "" };
问题是以这种方式填充字典。 如果我的例子改为:
var x = new Dictionary<string, string>();
x.Add("test", "");
然后回到原来的例子,这将有效:
List<Dictionary<string, string>> data = new List<Dictionary<string, string>>();
var x = new Dictionary<string, string>();
x.Add("test", "" );
data.Add(x);
顺便说一句,你为什么需要一个词典列表。听起来很复杂的设计模式 - 虽然技术上有效。
答案 4 :(得分:1)
字典对象期待键和值,而您只传递键。初始化字典时,您需要执行以下操作:
var anObject = new Dictionary<string, string>{ {"key", "value"} };
如果使用多个项初始化anObject,那么它将是:
var anObject = new Dictionary<string, string>
{
{ "key1", "val1" },
{ "key2", "val2" }
};
希望有所帮助!