正确的方式来初始化一个C#字典的值已经在它?

我使用以下代码在C#文件中创建字典:

private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
        = new Dictionary<string, XlFileFormat>
        {
            {"csv", XlFileFormat.xlCSV},
            {"html", XlFileFormat.xlHtml}
        };

new错误下面有一条红线:

功能'collection initilializer'不能使用,因为它不是ISO-2 C#语言规范的一部分

任何人都可以解释这里发生了什么?

编辑:好的,所以事实证明我使用.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(不支持它)或客户端配置文件框架,而不是支持初始化语法的.NET版本。


使用C#6.0,您可以按照以下方式创建字典:

var dict = new Dictionary<string, int>
{
    ["one"] = 1,
    ["two"] = 2,
    ["three"] = 3
};

它甚至适用于自定义类型。


你可以初始化一个Dictionary (和其他集合)内联。 每个成员都带有大括号:

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。

链接地址: http://www.djcxy.com/p/21311.html

上一篇: Proper way to initialize a C# dictionary with values already in it?

下一篇: What is the difference between C# versions like ver 2.0 and ver 3.0?