Je crée 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:
La fonctionnalité 'collection initilializer' ne peut pas être utilisée car elle ne fait pas partie de la spécification du langage ISO-2 C #
Quelqu'un peut-il expliquer ce qui se passe ici?
EDIT: OK, il s’avère que j’utilisais .NET version 2.
Je ne peux pas reproduire ce problème dans une application console .NET 4.0 simple:
static class Program
{
static void Main(string[] args)
{
var myDict = new Dictionary<string, string>
{
{ "key1", "value1" },
{ "key2", "value2" }
};
Console.ReadKey();
}
}
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 prend pas en charge) ou une infrastructure de profil client, plutôt qu'une version de .NET prenant en charge la syntaxe d'initialisation.
Avec C # 6.0, vous pouvez créer un dictionnaire de la manière suivante:
var dict = new Dictionary<string, int>
{
["one"] = 1,
["two"] = 2,
["three"] = 3
};
Cela fonctionne même avec des types personnalisés.
Vous pouvez initialiser un Dictionary
(et d'autres collections) en ligne. Chaque membre est contenu avec des accolades:
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 } }
};
Voir MSDN pour plus de détails.
Supposons que nous ayons un dictionnaire comme celui-ci
Dictionary<int,string> dict = new Dictionary<int, string>();
dict.Add(1, "Mohan");
dict.Add(2, "Kishor");
dict.Add(3, "Pankaj");
dict.Add(4, "Jeetu");
Nous pouvons l'initialiser comme suit.
Dictionary<int, string> dict = new Dictionary<int, string>
{
{ 1, "Mohan" },
{ 2, "Kishor" },
{ 3, "Pankaj" },
{ 4, "Jeetu" }
};
Les initialiseurs d'objet ont été introduits en C # 3.0, vérifiez la version de l'infrastructure que vous ciblez.