2013-06-29 3 views
5

Vi sono stati alcuni scorciatoia in C# che permettesse di semplificare questa:c scorciatoia # sintassi per passare un nome di oggetto quando riferendosi ad esso più volte di fila

List<string> exampleList = new List<string>(); 
exampleList.Add("Is"); 
exampleList.Add("it"); 
exampleList.Add("possible"); 

e in qualcosa di simile a questo:

var exampleList = new List<string>(); 
exampleList { 
.Add("is"); 
.Add("it"); 
.Add("possible"); 
} 

so che è possibile assegnare proprietà durante la dichiarazione come questa:

var myObject = new MyObject{ 
Id = "Useful", 
Name = "Shortcut" 
}; 

sarebbe intere pungere per sapere se ci sono altre utili scorciatoie del genere, ma non ne trovo nessuna.

risposta

5

si potrebbe scrivere un metodo di estensione:

public static class ListExt 
{ 
    public static List<T> Append<T>(this List<T> self, params T[] items) 
    { 
     if (items != null && self != null) 
      self.AddRange(items); 

     return self; 
    } 
} 

E poi utilizzarlo come this:

List<string> list = new List<string>(); 

list.Append("Or", "you", "can", "use", "an", "extension", "method"); 

list.Append("Or").Append("like").Append("this"); 
6
var exampleList = new List<string>() { 
    "Yes", "kinda", "with", "collection", "initializers" }; 

Nota che si può anche fare questo per il multi-parametro di aggiungere metodi, come dizionari:

var lookup = new Dictionary<string, int> { 
    {"abc", 124}, {"def",456} 
}; 
+0

Thx. Ma che dire di quando un oggetto è già inizializzato e vuoi semplicemente fare riferimento ad esso più volte e saltare il suo nome? – CoolCodeBro

+0

@CoolCodeBro quindi no. Basta usare il nome più volte. Potresti scrivere un metodo di estensione fluente api - ma non c'è davvero alcun punto –