Bonne façon d'initialiser un C# dictionnaire avec des valeurs?
Je suis entrain de créer un dictionnaire dans un fichier C# avec le code suivant:
private readonly Dictionary<string, XlFileFormat> FILE_TYPE_DICT
= new Dictionary<string, XlFileFormat>
{
{"csv", XlFileFormat.xlCSV},
{"html", XlFileFormat.xlHtml}
};
Il y a une ligne rouge sous new
avec l'erreur:
Caractéristique de la collection initilializer' ne peut pas être utilisé car il ne fait pas partie de l'ISO-2 spécification du langage C#
Quelqu'un peut-il expliquer ce qui se passe ici?
EDIT: ok, donc il s'avère que j'utilisais .NET version 2.
- Changement ciblé cadre de la version ou de l'utilisation de "l'ancien" chemin de l'initialisation.
- Dans quel contexte avez-vous placer ce code? Un
.cs
fichier qui sera compilé par Visual Studio, ou dans un.cshtml
? Est-ce que votre fichier de projet ont unlanguageVersion
élément? - Il est dans un fichier aspx
Vous devez vous connecter pour publier un commentaire.
Je ne peux pas reproduire ce problème en une simple .NET 4.0 application de console:
Pouvez-vous essayer de le reproduire dans une application Console simple et à partir de là? Il semble probable que vous ciblez .NET 2.0 (qui ne le supporte pas) ou profil du client cadre, plutôt que d'une version de .NET qui prend en charge la syntaxe d'initialisation.
Avec C# 6.0, vous pouvez créer un dictionnaire de la manière suivante:
Il fonctionne même avec des types personnalisés.
Vous pouvez initialiser un
Dictionary
(et d'autres collections) en ligne. Chaque membre est contenue par des accolades:Voir MSDN pour plus de détails.
Supposons que nous avons un dictionnaire comme ce
On peut l'initialiser comme suit.
Les initialiseurs d'objets ont été introduits dans C# 3.0, vérifiez la version de cadre que vous ciblez.
Vue d'ensemble de C# 3.0