650

次のコードを使用して、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 を使用しています。

4

8 に答える 8

1034

この問題は、単純な .NET 4.0 コンソール アプリケーションでは再現できません。

static class Program
{
    static void Main(string[] args)
    {
        var myDict = new Dictionary<string, string>
        {
            { "key1", "value1" },
            { "key2", "value2" }
        };

        Console.ReadKey();
    }
}

シンプルなコンソール アプリケーションでそれを再現して、そこから進むことはできますか? 初期化構文をサポートする .NET のバージョンではなく、.NET 2.0 (サポートしていない) またはクライアント プロファイル フレームワークをターゲットにしているようです。

于 2013-06-11T15:15:28.403 に答える
282

C# 6.0 では、次の方法で辞書を作成できます。

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

カスタムタイプでも機能します。

于 2015-02-10T14:58:55.440 に答える
13

オブジェクト初期化子は C# 3.0 で導入されました。ターゲットにしているフレームワークのバージョンを確認してください。

C# 3.0 の概要

于 2013-06-11T15:15:52.750 に答える
-2

コードは問題ないようです。.NET フレームワークを v2.0 以降に変更してみてください。

于 2021-04-24T16:23:50.060 に答える