Domanda

Vorrei compilare un arraylist specificando un elenco di valori, come avrei un intero array, ma sono sicuro di come farlo senza ripetute chiamate al metodo "add".

Per esempio, voglio assegnare { 1, 2, 3, "stringa1", "stringa2" } un arraylist.So per le altre matrici è possibile effettuare l'assegnazione, come:

int[] IntArray = {1,2,3};

C'è un simile modo di fare questo per un arraylist?Ho provato iladdrangemetodo ma la parentesi graffa metodo non implementano l'interfaccia ICollection.

È stato utile?

Soluzione

Elenco di matrice ha un costruttore che accetta ICollection, che viene implementato dalla classe Array.

object[] myArray = new object[] {1,2,3,"string1","string2"};
ArrayList myArrayList = new ArrayList(myArray);

Altri suggerimenti

A seconda della versione di C# si utilizza, si hanno diverse opzioni.

C# 3.0 ha inizializzatori, dettaglio Scott Gu Blog

Qui è un esempio del problema.

ArrayList list = new ArrayList {1,2,3};

E se l'inizializzazione di un oggetto da collezione, la maggior parte dei costruttori che prendere componenti simili a Iladdrangemetodo, anche se come hai detto che questo non può essere un'opzione.

I tuoi commenti implica che hai scelto ArrayList perché è stato il primo componente che si trova.

Supponendo che siete semplicemente alla ricerca di una lista di interi, questo è probabilmente il miglior modo di farlo.

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

E se si utilizza C# 2.0 (Che ha generics, ma non gli inizializzatori di raccolta).

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

Anche se l'int[] formato potrebbe non essere corretto nelle versioni precedenti, è possibile specificare il numero di elementi nell'array.

Presumo che non stai usando C# 3.0, che ha inizializzatori.Se non sei preoccupato per il sovraccarico di creazione di un temp array, è possibile farlo in 1.1/2.0:

ArrayList list = new ArrayList(new object[] { 1, 2, 3, "string1", "string2"});

(tipo di risposta alla mia domanda ma...)

La cosa più vicina che ho trovato per quello che voglio è quello di fare uso di ArrayList.Adattatore metodo:

object[] values = { 1, 2, 3, "string1", "string2" };
ArrayList AL = new ArrayList();
AL = ArrayList.Adapter(values);

//or during intialization
ArrayList AL2 = ArrayList.Adapter(values);

Questo è sufficiente per quello che mi serve, ma speravo che può essere fatto in una linea senza creare l'array temporaneo, come qualcuno ha suggerito.

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