2014-12-02 67 views
45

在最近出现了很多讨论有关在C#6.0
一个什么新的最受关注的功能,在C#6.0
使用Dictionary初始化别急,我们一直在使用集合初始化器来初始化集合和可以很好地初始化Dictionary也.NET 4.0和.NET 4.5(不知道老版),喜欢字典初始值设定项对收集初始值设定项有什么好处?

Dictionary<int, string> myDict = new Dictionary<int, string>() { 
    { 1,"Pankaj"}, 
    { 2,"Pankaj"}, 
    { 3,"Pankaj"} 
}; 

那么,什么是C#6.0中,什么字典初始化器,他们在C#中谈到有新6.0

+3

@DevEstacion问题标题可以编辑为“集合和字典初始值设定项之间的区别是什么”或“字典初始值设定项为集合初始值设定项添加了什么好处”以区别于“简单的可Googleable问题” – i3arnon 2014-12-02 09:57:36

回答

72

虽然你可能初始化集合初始值设定项的字典,这是非常麻烦的。特别是对于那些应该是句法糖的东西。

字典初始化器是干净得多:

var myDict = new Dictionary<int, string> 
{ 
    [1] = "Pankaj", 
    [2] = "Pankaj", 
    [3] = "Pankaj" 
}; 

更重要的是这些初始化不只是对于字典,它们可用于支撑一个索引任何物体,例如List<T>

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

输出:

1 
5 
3 
+12

这不是一回事。旧版本调用'Add'方法(现在可以是C#中的扩展方法),新版本调用索引器。最终结果可能与字典相同,但新的可用于具有索引器但不含“添加”方法的类型。 – 2014-12-03 00:23:09

+0

@PauloMorgado当然。我没有其他建议。 – i3arnon 2014-12-03 09:52:12

+4

@ I3arnon,不,你没有。当我读到这个问题和答案时,我认为它可能会被误解为是一回事。我只是强化你的答案。 – 2014-12-03 23:09:39

2

新是crea婷字典这样

Dictionary<int, string> myDict = new Dictionary<int, string>() { 
    [1] = "Pankaj", 
    [2] = "Pankaj", 
    [3] = "Pankaj" 
}; 

与风格<index> = <value>

过时:字符串指引构件语法(如在注释中规定)

Dictionary<int, string> myDict = new Dictionary<int, string>() { 
     $1 = "Pankaj", 
     $2 = "Pankaj", 
     $3 = "Pankaj" 
    }; 

A C# 6.0 Language Preview

采取

了解$ operat或者,看看AreEqual函数调用。请注意字典成员对builtInDataTypes变量的“$ Boolean”的调用 - 尽管Dictionary中没有“Boolean”成员。这样的显式成员不是必需的,因为$操作符调用字典上的索引成员,相当于调用buildInDataTypes [“Boolean”]。

+9

AFAIK $运算符不存在了。 – i3arnon 2014-12-02 07:48:32

相关问题