我用下面的代码在c#文件中创建一个字典:

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

new下面有一条红线,错误如下:

特性“集合初始化器”不能被使用,因为它不是ISO-2 c#语言规范的一部分

这是怎么回事?

我使用的是。net版本2。


当前回答

使用 С# 6.0

var myDict = new Dictionary<string, string>
{
    ["Key1"] = "Value1",
    ["Key2"] = "Value2"
};

其他回答

注意,c# 9允许target类型的new表达式,所以如果你的变量或类成员不是抽象类或接口类型的复制可以避免:

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

在c# 6.0中,你可以用下面的方法创建字典:

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

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

代码看起来很好。只需尝试将. net框架更改为v2.0或更高版本。

对象初始化器是在c# 3.0中引入的。检查您的目标框架版本。

c# 3.0概述

使用 С# 6.0

var myDict = new Dictionary<string, string>
{
    ["Key1"] = "Value1",
    ["Key2"] = "Value2"
};