我可以很容易地使用字符串数组而不事先使用类似的东西声明它:
new string[]{"MyString1","MyString2"}
并将其用作方法参数,而无需事先为其声明变量。但是我无法使用Dictionary<string,string>
正确执行此操作。
我试过了:
new Dictionary<string,string>(){"1","2"}
并且
new Dictionary<string,string>().Add("1","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