📜  C#| ArrayList,其元素为指定值的副本(1)

📅  最后修改于: 2023-12-03 15:00:14.367000             🧑  作者: Mango

C# | ArrayList,其元素为指定值的副本

在C#中,ArrayList是一种可变大小的数组类型,它允许我们在其中存储任意类型的对象。有时,我们需要从一个ArrayList中获取特定值的副本,并将它们存储到另一个数组或集合中。下面是如何做到这一点的示例:

ArrayList al = new ArrayList();
al.Add("Alice");
al.Add("Bob");
al.Add("Charlie");
al.Add("David");

// 创建一个新的ArrayList并将元素复制到其中
ArrayList alCopy = ArrayList.Adapter(al.ToArray().Clone() as object[]);

在上面的代码中,我们首先创建了一个ArrayList对象,并向其中添加了一些字符串。然后,我们使用ToArray()方法将ArrayList转换为数组,并使用Clone()方法创建该数组的浅表副本。最后一个as操作符将克隆的对象转换为一个object[]数组。我们使用ArrayList.Adapter()方法创建了一个新的ArrayList对象,并将克隆数组中的元素复制到其中。

现在,我们可以像使用任何其他ArrayList一样使用这个新创建的对象。例如,我们可以使用foreach循环遍历其元素:

foreach (string value in alCopy)
{
  Console.WriteLine(value);
}

以上代码将输出以下内容:

Alice
Bob
Charlie
David

在本例中,我们创建了一个ArrayList的副本,但是如果我们只需存储ArrayList中的几个元素或不同类型的元素,我们可以使用List或其他更专门化的集合类型来代替ArrayList,以实现更好的性能和类型安全性。

综上所述,ArrayList是在C#中广泛使用的数据结构类型,我们可以使用ArrayList.Adapter()方法轻松地复制其元素并将它们存储到新的数组或集合中。然而,为了获得更好的性能和类型安全性,我们建议使用更专门化的集合类型来代替ArrayList。