Proper way to initialize a C# dictionary with values?
我正在用以下代码在C文件中创建字典:
1 2 3 4 5 6 | private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT = new Dictionary<string, XlFileFormat> { {"csv", XlFileFormat.xlCSV}, {"html", XlFileFormat.xlHtml} }; |
Feature 'collection initilializer' cannot be used because it is not part of the ISO-2 C# language specification
有人能解释一下这是怎么回事吗?
编辑:好吧,原来我用的是.NET版本2。
我无法在简单的.NET 4.0控制台应用程序中重现此问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 | static class Program { static void Main(string[] args) { var myDict = new Dictionary<string, string> { {"key1","value1" }, {"key2","value2" } }; Console.ReadKey(); } } |
你能试着在一个简单的控制台应用程序中复制它并从那里开始吗?似乎您的目标是.NET 2.0(不支持它)或客户端配置文件框架,而不是支持初始化语法的.NET版本。
使用C 6.0,您可以通过以下方式创建字典:
1 2 3 4 5 6 |
它甚至可以与自定义类型一起使用。
您可以以内联方式初始化
1 2 3 4 5 6 | Dictionary<int, StudentName> students = new Dictionary<int, StudentName> { { 111, new StudentName { FirstName ="Sachin", LastName ="Karnik", ID = 211 } }, { 112, new StudentName { FirstName ="Dina", LastName ="Salimzianova", ID = 317 } }, { 113, new StudentName { FirstName ="Andy", LastName ="Ruth", ID = 198 } } }; |
有关详细信息,请参阅msdn。
假设我们有这样的字典
1 2 3 4 5 | Dictionary<int,string> dict = new Dictionary<int, string>(); dict.Add(1,"Mohan"); dict.Add(2,"Kishor"); dict.Add(3,"Pankaj"); dict.Add(4,"Jeetu"); |
我们可以如下初始化它。
1 2 3 4 5 6 7 | Dictionary<int, string> dict = new Dictionary<int, string> { { 1,"Mohan" }, { 2,"Kishor" }, { 3,"Pankaj" }, { 4,"Jeetu" } }; |
对象初始值设定项是在C 3.0中引入的,请检查要针对的框架版本。
C 3.0概述