字典初始化程序在集合初始化程序中添加了哪些好处?

Pan*_*kaj 47 c# collections dictionary collection-initializer c#-6.0

在最近出现了很多讨论关于C#什么新的6.0
的一个最受关注的功能是通过Dictionary在初始化C#6.0
别急,我们一直在使用集合初始化器来初始化集合,并可以很好的初始化Dictionary也.NET 4.0和.NET 4.5(不知道旧版本)之类的

Dictionary<int, string> myDict = new Dictionary<int, string>() {
    { 1,"Pankaj"},
    { 2,"Pankaj"},
    { 3,"Pankaj"}
};
Run Code Online (Sandbox Code Playgroud)

那么C#6.0中有什么新东西,他们在C#6.0中讨论的是什么字典初始化器

i3a*_*non 75

虽然您可以使用集合初始化程序初始化字典,但这非常麻烦.特别是对于那些应该是语法糖的东西.

字典初始化器更清晰:

var myDict = new Dictionary<int, string>
{
    [1] = "Pankaj",
    [2] = "Pankaj",
    [3] = "Pankaj"
};
Run Code Online (Sandbox Code Playgroud)

更重要的是,这些初始化程序不仅适用于字典,它们可用于支持索引器的任何对象,例如List<T>:

var array = new[] { 1, 2, 3 };
var list = new List<int>(array) { [1] = 5 };
foreach (var item in list)
{
    Console.WriteLine(item);
}
Run Code Online (Sandbox Code Playgroud)

输出:

1
5
3
Run Code Online (Sandbox Code Playgroud)

  • 这不是一回事.旧版本调用`Add`方法(现在可以是C#中的扩展方法),新调用索引器.字典的最终结果可能相同,但新字典可用于具有索引器但不具有"添加"方法的类型. (14认同)
  • @ I3arnon,不,你没有.当我读到问题和你的答案时,我认为它可能被误解为是同一件事.我只是在加强你的答案. (4认同)