次のコードで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)
{
var myDict = new Dictionary<string, string>
{
{ "key1", "value1" },
{ "key2", "value2" }
};
Console.ReadKey();
}
}
簡単なコンソールアプリケーションで再現して、そこから移動することはできますか?初期化構文をサポートする.NETのバージョンではなく、.NET 2.0(これをサポートしていない)またはクライアントプロファイルフレームワークをターゲットにしているようです。
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 _ を参照してください。
このような辞書があるとします。
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" }
};
オブジェクト初期化子はC#3.0で導入されました。どのフレームワークバージョンをターゲットにしているか確認してください。