如何在不事先声明的情况下使用词典?

时间:2012-08-13 11:42:59

标签: c# dictionary

我可以很容易地使用字符串数组而不事先使用类似的东西声明它:

new string[]{"MyString1","MyString2"} 

并将其用作方法参数,而无需事先为其声明变量。但是我无法使用Dictionary<string,string>正确执行此操作。 我试过了:

new Dictionary<string,string>(){"1","2"}

并且

new Dictionary<string,string>().Add("1","2"):

以上都不是在编译方面。

2 个答案:

答案 0 :(得分:12)

这样做

new Dictionary<string,string>(){{"Key1","Value1"},{"Key2","Value2"}};

每个词典条目都是一个键和相应值的组合。因此,首先输入{"Key1","Value1"},其中Key为"Key1",值为"Value1",依此类推。

  

并将其用作方法参数,而无需事先为其声明变量。但是我不能用Dictionary做这个。我试过了:

new Dictionary<string,string>().Add("1","2"):

这不能用于方法参数,因为Add方法不返回任何内容。它是一种无效的方法。

深思熟虑:您的new string[]{"MyString1","MyString2"}是单维数组,即string[],而字典就像字符串[x] [2],其中x是字典的长度。 (string [x] [2]仅用于表示目的。我知道它的非法声明)

答案 1 :(得分:8)

试试这个:

new Dictionary<string, string>() {
    { "1", "2" }, { "3", "4" }
};

您需要额外的括号来初始化字典所包含的键值对。这些括号基本上调用Add(),并且由于Add()采用两个参数(键和值),因此您将两个项放在这些括号中。

此方法可用于Add()方法采用多个参数的任何Collection。

有关对象和集合初始值设定项的详细信息,请参见此处:
http://msdn.microsoft.com/en-us/library/bb384062.aspx

或者,关于初始化字典:
http://msdn.microsoft.com/en-us/library/bb531208