Come spostare i dati di un Arrayist in un altro array. Ho provato per molti opzione ma l'uscita è in forma di matrice non ArrayListSpostare i dati di un arraylist in un altro arraylist in C#
risposta
ArrayList l1=new ArrayList();
l1.Add("1");
l1.Add("2");
ArrayList l2=new ArrayList(l1);
ArrayList model = new ArrayList();
ArrayList copy = new ArrayList(model);
?
Questa è la risposta giusta. – Matth3w
Utilizzare il costruttore di ArrayList che accetta un ICollection come parametro. La maggior parte delle raccolte ha questo costruttore.
ArrayList newList = new ArrayList(oldList);
In primo luogo - a meno che non si è in .NET 1.1, si dovrebbe evitare di un ArrayList
- preferisce collezioni digitato come ad esempio List<T>
.
Quando si dice "copia" - vuoi sostituire, accoda, o creare nuova?
Per append (utilizzando List<T>
):
List<int> foo = new List<int> { 1, 2, 3, 4, 5 };
List<int> bar = new List<int> { 6, 7, 8, 9, 10 };
foo.AddRange(bar);
Per sostituire, aggiungere un foo.Clear();
prima della AddRange
. Naturalmente, se si conosce il secondo elenco è abbastanza lungo, si potrebbe ciclo sul indicizzatore:
for(int i = 0 ; i < bar.Count ; i++) {
foo[i] = bar[i];
}
Per creare nuova:
List<int> bar = new List<int>(foo);
perché hai raccomandato di usare List
@kashif digita sicurezza (evitando stupidi bug), prestazioni (boxe e memoria), API migliori, supporto per LINQ, ecc ... Perché * non * qualcuno preferisce la versione generica? L'unico caso limite che conosco qui è Hashtable, che conserva ancora un po 'di utilizzo perché ha un modello di threading molto migliore di Dictionary'2 –
http://msdn.microsoft.com/en-us/library/system.collections.arraylist.addrange.aspx
spudorata copia/incolla da quanto sopra Link
// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add("The");
myAL.Add("quick");
myAL.Add("brown");
myAL.Add("fox");
// Creates and initializes a new Queue.
Queue myQueue = new Queue();
myQueue.Enqueue("jumped");
myQueue.Enqueue("over");
myQueue.Enqueue("the");
myQueue.Enqueue("lazy");
myQueue.Enqueue("dog");
// Displays the ArrayList and the Queue.
Console.WriteLine("The ArrayList initially contains the following:");
PrintValues(myAL, '\t');
Console.WriteLine("The Queue initially contains the following:");
PrintValues(myQueue, '\t');
// Copies the Queue elements to the end of the ArrayList.
myAL.AddRange(myQueue);
// Displays the ArrayList.
Console.WriteLine("The ArrayList now contains the following:");
PrintValues(myAL, '\t');
Diverso da quello che penso Marc Gravell è a posto ;)
@Konstantin Savelev aveva ragione – Matth3w
ho trovato la risposta per spostare il backup dei dati come:
Firstarray.AddRange(SecondArrary);
Sei voler una copia profonda o superficiale degli elementi? –