In C#, è possibile inizializzare un elenco utilizzando la seguente sintassi.Inizializzazione di un elenco generico in C#
List<int> intList= new List<int>() { 1, 2, 3 };
Vorrei sapere come funziona che {}
sintassi, e se si ha un nome. C'è un costruttore che prende uno IEnumerable
, potresti chiamarlo.
List<int> intList= new List<int>(new int[]{ 1, 2, 3 });
Sembra più "standard". Quando ho decostruisco il costruttore di default per l'elenco vedo solo
this._items = Array.Empty;
Vorrei essere in grado di fare questo.
CustomClass abc = new CustomClass() {1, 2, 3};
Ed essere in grado di utilizzare l'elenco 1, 2, 3
. Come funziona?
Aggiornamento
Jon Skeet ha risposto
E 'chiamare il costruttore senza parametri , e quindi chiamando Aggiungi:
> List<int> tmp = new List<int>();
> tmp.Add(1); tmp.Add(2); tmp.Add(3);
> List<int> intList = tmp;
ho capito che cosa è fa. Voglio sapere come. Come sa questa sintassi chiamare il metodo Add?
Aggiornamento
lo so, come cliché di accettare una risposta Jon Skeet. Ma l'esempio con archi e stringhe è fantastico. Anche una pagina molto utile MSDN è:
Vergogna gli argomenti erano il modo sbagliato - ma risolto ora :) –
Quindi, perché è cura che il tipo è enumerabile? non sembra aggiungere altro che rendere C# più consapevole di .NET, simile a IDisposable .. mi chiedo perché foreach richiede JUST una firma compat e non interfacce .. Ho pensato che l'idea fosse così C# non sarebbe specificamente legato a un 'lang' – meandmycode
@meandmycode: foreach non è legato a IEnumerable perché pre-generici non c'era altro modo di esporre un iteratore senza boxe. Con i generici sono sicuro che avrebbe * solo * basato su IEnumerable. (Continua) –