2009-02-09 5 views

ответ

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

Это правильный ответ. – Matth3w

4

Используйте конструктор массива ArrayList, который принимает ICollection в качестве параметра. В большинстве коллекций есть этот конструктор.

ArrayList newList = new ArrayList(oldList); 
15

Первый - если вы не на .NET 1.1, вы должны избегать ArrayList - предпочитают напечатал коллекции, такие как List<T>.

Когда вы говорите, "копия" - вы хотите заменить , добавить или создать новую?

Для добавления (с использованием 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); 

Для замены, добавьте foo.Clear(); перед AddRange. Конечно, если вы знаете, что второй список достаточно долго, вы могли бы петлю на индексатор:

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

Чтобы создать новый:

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

Почему вы рекомендуете использовать List вместо ArrayList, если только не используете .NET 1.1 ??? – kashif

+3

@kashif тип безопасности (избегая глупых ошибок), производительность (бокс и память), лучший API, поддержка LINQ и т. Д. Почему * не будет * кто-то предпочитает родовую версию? Единственный краевой случай, который я знаю здесь, - это Hashtable, который по-прежнему сохраняет некоторое использование, потому что он имеет гораздо лучшую модель нарезки, чем Dictionary'2 –

1

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

бесстыдное копирование/вставка из выше ссылка

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

кроме того, я думаю, Marc Gravell это пятно на ;)

+0

@ Константин Савельев имел это право – Matth3w

0

Я нашел ответ для перемещения вверх данные, как:

Firstarray.AddRange(SecondArrary); 
Смежные вопросы