Come posso inizializzare un elenco C # nella stessa riga lo dichiaro. (Esempio di raccolta di stringhe IEnumerable)


107

Sto scrivendo il mio codice di prova e non voglio scrivere:

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

Mi piacerebbe scrivere

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

Tuttavia {"uno", "due", "tre"} non è una "Raccolta di stringhe IEnumerable". Come posso inizializzarlo in una riga utilizzando la IEnumerable string Collection "?

Risposte:


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

Essenzialmente la sintassi è:

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

Che viene tradotto dal compilatore come

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

Mi piace questo metodo senza parentesi, con quale versione c # è iniziata?
SilverbackNet

9
Non è del tutto tradotto in questo, almeno non in generale. L'assegnazione alla variabile avviene dopo che tutte le Addchiamate sono state effettuate - è come se usasse una variabile temporanea, con list = tmp;alla fine. Questo può essere importante se stai riassegnando il valore di una variabile.
Jon Skeet

Le proprietà automatiche e gli inizializzatori di oggetti sono stati introdotti con .NET 3 credo, è la stessa versione di Framework, solo un compilatore aggiornato per supportare LINQ.
Matthew Abbott

@ Jon, Cheers, non ho mai saputo quella parte. : D
Matthew Abbott

@ Jon Skeet: "... Questo può essere importante se stai riassegnando il valore di una variabile." puoi spiegare un po 'di più su questa osservazione?
Tony

17

Cambia il codice in

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

o

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

qual è lo scopo dell'utilizzo della seconda riga "List <string> nameslist = new List <string> (new [] {" one "," two "," three "});" quando possiamo usarlo? Inoltre, qual è il significato di "nuovo [] {...}" nella seconda sintassi? Perché viene utilizzata la nuova parola chiave insieme alle parentesi [] ???
Tony



3

Rimuovi le parentesi:

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

3

Dipende dalla versione di C # che stai usando, dalla versione 3.0 in poi puoi usare ...

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

1

Penso che questo funzionerà per valori int, long e string.

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


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

0

Questo è un modo.

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

Questo è un altro modo.

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

list2.Add(1);

list2.Add(2);

Lo stesso vale con le corde.

Per esempio:

List<string> list3 = new List<string> { "Hello", "World" };
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.