2014-12-02 125 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

相關問題