2009-02-09 3 views

Répondre

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

C'est la bonne réponse. – Matth3w

4

Utilisez le constructeur de ArrayList qui prend un ICollection comme paramètre. La plupart des collections ont ce constructeur.

ArrayList newList = new ArrayList(oldList); 
15

Première - à moins que vous êtes sur .NET 1.1, vous devez éviter un ArrayList - Préférez saisi des collections telles que List<T>.

Quand vous dites "copie" - voulez-vous remplacer, append, ou créer de nouveaux ?

Pour append (en utilisant 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); 

Pour remettre en place, ajoutez un foo.Clear(); avant la AddRange. Bien sûr, si vous connaissez la deuxième liste est assez longue, vous bouclez pouvez sur l'indexeur:

for(int i = 0 ; i < bar.Count ; i++) { 
     foo[i] = bar[i]; 
    } 

Pour créer un nouveau:

List<int> bar = new List<int>(foo); 
+1

pourquoi avez-vous recommandé d'utiliser la liste au lieu de ArrayList à moins d'utiliser .NET 1.1 ??? – kashif

+3

sécurité de type @ kashif (éviter les bugs stupides), les performances (boxe et mémoire), une meilleure API, le support de LINQ, etc ... Pourquoi * quelqu'un * ne préfèrerait pas la version générique? Le seul cas limite que je connais ici est Hashtable, qui conserve encore un peu d'usage parce qu'il a un meilleur modèle de threading que Dictionary'2 –

1

http://msdn.microsoft.com/en-us/library/system.collections.arraylist.addrange.aspx

copier/coller sans vergogne de ce qui précède lien

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

Autre que je pense Marc Gravell est sur place ;)

+0

@Konstantin Savelev avait raison – Matth3w

0

J'ai trouvé la réponse pour déplacer les données comme:

Firstarray.AddRange(SecondArrary); 
Questions connexes