Comment puis-je initialiser une liste C # dans la même ligne que je la déclare. (Exemple de collection de chaînes IEnumerable)


107

J'écris mon testcode et je ne veux pas écrire:

List<string> nameslist = new List<string>();
nameslist.Add("one");
nameslist.Add("two");
nameslist.Add("three");

J'adorerais écrire

List<string> nameslist = new List<string>({"one", "two", "three"});

Cependant {"un", "deux", "trois"} n'est pas une "Collection de chaînes IEnumerable". Comment puis-je initialiser ceci en une ligne en utilisant la collection de chaînes IEnumerable "?

Réponses:


168
var list = new List<string> { "One", "Two", "Three" };

La syntaxe est essentiellement:

new List<Type> { Instance1, Instance2, Instance3 };

Ce qui est traduit par le compilateur comme

List<string> list = new List<string>();
list.Add("One");
list.Add("Two");
list.Add("Three");

J'aime cette méthode sans parenthèses, par quelle version c # cela a-t-il commencé?
SilverbackNet

9
Ce n'est pas tout à fait traduit en cela, du moins pas en général. L'affectation à la variable se produit après que tous les Addappels ont été effectués - c'est comme si elle utilisait une variable temporaire, avec list = tmp;à la fin. Cela peut être important si vous réaffectez la valeur d'une variable.
Jon Skeet

Les propriétés automatiques et les initiateurs d'objets ont été introduits avec .NET 3 Je crois que c'est la même version de Framework, juste un compilateur mis à jour pour prendre en charge LINQ.
Matthew Abbott

@Jon, Cheers, je n'ai jamais connu cette partie. : D
Matthew Abbott

@Jon Skeet: "... Cela peut être important si vous réaffectez la valeur d'une variable." pouvez-vous expliquer un peu plus sur cette remarque?
Tony

17

Changez le code en

List<string> nameslist = new List<string> {"one", "two", "three"};

ou

List<string> nameslist = new List<string>(new[] {"one", "two", "three"});

à quoi sert la deuxième ligne "List <string> nameslist = new List <string> (new [] {" one "," two "," three "});" quand pouvons-nous l'utiliser? Aussi quelle est la signification de "new [] {...}" dans la seconde syntaxe? Pourquoi new mot-clé est utilisé avec la parenthèse [] ???
Tony



3

Supprimez les parenthèses:

List<string> nameslist = new List<string> {"one", "two", "three"};

3

Cela dépend de la version de C # que vous utilisez, à partir de la version 3.0, vous pouvez utiliser ...

List<string> nameslist = new List<string> { "one", "two", "three" };

1

Je pense que cela fonctionnera pour les valeurs int, long et string.

List<int> list = new List<int>(new int[]{ 2, 3, 7 });


var animals = new List<string>() { "bird", "dog" };

0

C'est une manière.

List<int> list = new List<int>{ 1, 2, 3, 4, 5 };

C'est une autre manière.

List<int> list2 = new List<int>();

list2.Add(1);

list2.Add(2);

Il en va de même avec les chaînes.

Par exemple:

List<string> list3 = new List<string> { "Hello", "World" };
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.