将一个arraylist数据移动到C#中的另一个arraylist

时间:2009-02-09 09:40:49

标签: c# arraylist

如何将一个Arraylist数据移动到另一个arraylist。我尝试了很多选项,但输出的形式是数组而不是arraylist

6 个答案:

答案 0 :(得分:16)

首先 - 除非您使用的是.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 :(得分:6)

        ArrayList model = new ArrayList();
        ArrayList copy = new ArrayList(model);

答案 2 :(得分:5)

使用将ICollection作为参数的ArrayList构造函数。 大多数集合都有这个构造函数。

ArrayList newList = new ArrayList(oldList);

答案 3 :(得分:4)

ArrayList l1=new ArrayList();
l1.Add("1");
l1.Add("2");
ArrayList l2=new ArrayList(l1);

答案 4 :(得分: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是正确的;)

答案 5 :(得分:1)

我找到了提升数据的答案,如:

Firstarray.AddRange(SecondArrary);