2010-12-14 67 views
74

Je suis en train d'écrire mon TestCode et je ne veux pas wo écrire:Comment puis-je initialiser une liste C# dans la même ligne que je le déclare. (Chaîne IEnumerable Collection Exemple)

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

J'aimerais écrire

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

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

Répondre

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

Essentiellement, la syntaxe est:

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

qui se traduit par le compilateur comme

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

J'aime ce la méthode des parenthèses, quelle est la version de C# qui a commencé? – SilverbackNet

+1

@SilverbackNet: C# 3. –

+9

Ce n'est pas * tout * traduit en cela, du moins pas en général.L'attribution à la variable arrive * après * tous les appels 'Add' ont a été faite - 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 –

13

Modifier le code à

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

ou

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

quel est le but de l'utilisation de la deuxième ligne "Liste nameslist = new Liste (new [] {" one "," two "," three "}); " quand peut-on l'utiliser? Aussi ce que signifie" nouveau [] {...} "dans la deuxième syntaxe? Pourquoi le nouveau mot-clé est utilisé avec la parenthèse [] ??? – Tony

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

Retirez 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 ... partir

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

juste perdre la parenthèse:

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

Oups, on dirait que cinq personnes m'ont battu. –