为什么可以像这样初始化一个 Dictionary<T1,T2>
:
var dict = new Dictionary<string,int>() {
{ "key1", 1 },
{ "key2", 2 }
};
...但不能用完全相同的方式初始化 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."
我意识到我可以通过仅编写new KeyValuePair<string,int>() { "key1", 1 }
为每个项目使第二个示例起作用。 但我想知道是否可能使用与第一个示例中可能的简洁语法相同的类型。
如果不可能,那么是什么使Dictionary类型如此特殊?
List
与Dictionary
上(以便排除数组),尽管错误消息可能会有所不同?(思考中:如何知道如何从{a,b}
创建KVP?;-) - user166390