2009-02-09 5 views

risposta

4
ArrayList l1=new ArrayList(); 
l1.Add("1"); 
l1.Add("2"); 
ArrayList l2=new ArrayList(l1); 
6
 ArrayList model = new ArrayList(); 
     ArrayList copy = new ArrayList(model); 

?

+0

Questa è la risposta giusta. – Matth3w

4

Utilizzare il costruttore di ArrayList che accetta un ICollection come parametro. La maggior parte delle raccolte ha questo costruttore.

ArrayList newList = new ArrayList(oldList); 
15

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); 
+1

perché hai raccomandato di usare List invece di ArrayList se non si utilizza .NET 1.1 ??? – kashif

+3

@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 –

1

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 ;)

+0

@Konstantin Savelev aveva ragione – Matth3w

0

ho trovato la risposta per spostare il backup dei dati come:

Firstarray.AddRange(SecondArrary);