Domanda

In Java, mi piace usare costrutti come

List<String> list = new ArrayList<String>() {{add("foo");}};

C'è un modo per fare questo in 1 riga in C #, anche tu?

È stato utile?

Soluzione

Credo che quello che vuoi è un inizializzatore array

List<string> list = new List<string>() { "foo" };

Articoli multipli devono essere separati da virgole

List<string> list = new List<string>() { "foo","bar","bas"};

Altri suggerimenti

Questo è chiamato un raccolta di inizializzazione e fa parte di C # 3.0.

Così come le liste, è possibile inizializzare le collezioni di tipi più complessi, a patto che implementano IEnumerable e hanno approprate Aggiungi i metodi per ogni elemento della collezione di inizializzazione. Ad esempio, è possibile utilizzare il metodo di Add(key, value) Dictionary<TKey, TValue> in questo modo:

var dict = new Dictionary<string, int> 
{ 
    {"first", 10 }, 
    {"second", 20 }
};

Maggiori dettagli possono essere trovati nel capitolo 8 della C # in profondità, che può essere scaricato gratuitamente dal di Manning sito web .

Si può fare in .NET 3.5 per impostare i valori delle proprietà:

List<string> list = new List<string> () { Property = Value, Property2 = Value2 };

O per inizializzare un array:

List<string> list = new List<string> () { "value1", "value2" };

Non è possibile chiamare i metodi in questo modo, però.

Se avete solo bisogno di trattare con l'aggiunta di oggetti ad una collezione, poi inizializzatori raccolta grande lavoro, ma se avete bisogno di inizializzazione più statico deve essere eseguito, è possibile utilizzare qualcosa chiamato un costruttore statico che funziona esattamente come un inizializzatore statico in java

Questo ha formattazione poveri, ma sembra coprirlo

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top