我用下面的代码在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。


当前回答

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

其他回答

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

我不能在一个简单的。net 4.0控制台应用程序中重现这个问题:

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# 3.0中引入的。检查您的目标框架版本。

c# 3.0概述

下面是一个Dictionary值的Dictionary示例

            Dictionary<string, Dictionary<int, string>> result = new() {
                ["success"] = new() {{1, "ok"} ,  { 2, "ok" } },
                ["fail"] = new() {{ 3, "some error" }, { 4, "some error 2" } },
            };

这在JSON中是等价的:

{
  "success": {
    "1": "ok",
    "2": "ok"
  },
  "fail": {
    "3": "some error",
    "4": "some error 4"
  }
}

使用 С# 6.0

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