相关疑难解决方法(0)

如何使内联数组初始化工作,如字典初始化?

为什么可以这样初始化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# syntax initialization magic-methods

21
推荐指数
2
解决办法
3442
查看次数

使用数组初始化语法在C#上初始化Dictionary实例时会发生什么?

有谁知道C#编译器使用以下代码做什么?

dict = new Dictionary<int, string>()
{
    { 1, "value1" },
    { 2, "value2" }
}
Run Code Online (Sandbox Code Playgroud)

它是否创建KeyValuePair实例并调用Add方法或执行更优化的操作尚不清楚.你们中有谁都知道吗?

c# dictionary

3
推荐指数
1
解决办法
339
查看次数

标签 统计

c# ×2

dictionary ×1

initialization ×1

magic-methods ×1

syntax ×1