2010-12-14 14 views
74

estoy escribiendo mi testcode y no quiero wo escritura:¿Cómo puedo inicializar una lista de C# en la misma línea que la declaro? (Colección Ejemplo de cadena IEnumerable)

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

Me encantaría escribir

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

Sin embargo { "uno", "dos", "tres"} no es una "colección de cadenas IEnumerable". ? ¿Cómo puedo inicializar esto en una línea usando la Colección cadena IEnumerable "

Respuesta

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

Esencialmente, la sintaxis es la siguiente:

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

que se traduce por el compilador como

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

Me gusta esto no- método de paréntesis, ¿con qué versión de C# comenzó eso? – SilverbackNet

+1

@SilverbackNet: C# 3. –

+9

No se traduce * del todo * a eso, al menos no en general. La asignación a la variable ocurre * después * de que todas las llamadas a 'Add' tienen realizado, es como si utilizara una variable temporal, con 'list = tmp;' al final. Esto puede ser importante si * reasigna * el valor de una variable. –

13

Cambiar el código para

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

o

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

¿cuál es el propósito de utilizar la segunda línea? Lista nameslist = new List (new [] {"one", "two", "three"}); " ¿cuándo podemos usarlo? También, ¿qué significa" nuevo [] {...} "en la segunda sintaxis? ¿Por qué se usa una palabra clave nueva junto con el paréntesis []? – Tony

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

quitar los paréntesis:

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

que depende de la versión de C# que está utilizando, desde la versión 3.0 en adelante se puede utilizar ...

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

Sólo perder el paréntesis:

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

Vaya, parece que cinco personas me golpearon. –

Cuestiones relacionadas