为什么可以这样初始化Dictionary<T1,T2>:
var dict = new Dictionary<string,int>() {
{ "key1", 1 },
{ "key2", 2 }
};
Run Code Online (Sandbox Code Playgroud)
...但是不要以KeyValuePair<T1,T2>完全相同的方式初始化一组对象:
var kvps = new KeyValuePair<string,int>[] {
{ "key1", 1 },
{ "key2", 2 }
};
// compiler error: "Array initializers can only be used in a variable
// or field initializer. Try using a new expression instead."
Run Code Online (Sandbox Code Playgroud)
我意识到我可以通过new KeyValuePair<string,int>() { "key1", 1 }为每个项目编写等来使第二个例子工作.但我想知道是否可以使用第一个示例中可能的相同类型的简洁语法.
如果不可能,那么是什么让Dictionary类型如此特别?
有谁知道C#编译器使用以下代码做什么?
dict = new Dictionary<int, string>()
{
{ 1, "value1" },
{ 2, "value2" }
}
Run Code Online (Sandbox Code Playgroud)
它是否创建KeyValuePair实例并调用Add方法或执行更优化的操作尚不清楚.你们中有谁都知道吗?