正确的方法来初始化一个C#字典的值已经在它?
我正在用下面的代码在C#文件中创build一个字典:
private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT = new Dictionary<string, XlFileFormat> { {"csv", XlFileFormat.xlCSV}, {"html", XlFileFormat.xlHtml} };
在new
的下面有一个红线,错误:
function“集合初始化程序”不能被使用,因为它不是ISO-2 C#语言规范的一部分
任何人都可以解释这里发生了什么?
编辑:好的,所以事实certificate,我使用.NET版本2。
我无法在简单的.NET 4.0控制台应用程序中重现此问题:
static class Program { static void Main(string[] args) { Dictionary<string, string> myDict = new Dictionary<string, string> { { "key1", "value1" }, { "key2", "value2" } }; Console.ReadKey(); } }
你可以尝试在一个简单的控制台应用程序重现它,并从那里去? 看起来很可能您的目标是.NET 2.0(不支持它)或客户端configuration文件框架,而不是支持初始化语法的.NET版本。
使用C#6.0,您可以按以下方式创build一个字典:
var dict=new Dictionary<string,int> { ["one"]=1, ["two"]=2, ["three"]=3 };
它甚至适用于自定义types。
您可以初始化一个字典(和其他集合)内联。 每个成员都带有大括号:
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 ( https://msdn.microsoft.com/zh-cn/library/bb531208.aspx )
对象初始化器是在C#3.0中引入的,请检查您的目标是哪个框架版本。
C#3.0概述
假设我们有这样一本字典 –
Dictionary<int,string> dict = new Dictionary<int,string>(); dict.Add(1,"Mohan"); dict.Add(2, "Kishor"); dict.Add(3, "Pankaj"); dict.Add(4, "Jeetu");
我们可以将其初始化如下。
Dictionary<int,string> dict = new Dictionary<int,string> { {1,"Mohan" }, {2,"Kishor" }, {3,"Pankaj" }, {4,"Jeetu" } };