📅  最后修改于: 2023-12-03 15:38:31.870000             🧑  作者: Mango
ArrayList
是 C# 中一个非常有用的类,它允许我们动态向数组添加元素。有时,我们希望创建一个数组列表的副本,但只是其元素的一个浅表副本,而不是一个深拷贝。在本文中,我们将介绍如何在 C# 中创建一个 ArrayList
的浅表副本。
在 C# 中,对象是通过引用传递的,这意味着当我们在数组列表中添加一个对象时,我们实际上是将该对象的指针添加到数组列表中。当我们复制该数组列表时,副本将包含相同的对象指针,而不是新的对象副本。这意味着,如果我们修改了副本中的对象,原始列表中的对象也会受到影响。
这就是所谓的浅表复制,因为我们只复制了对象的指针,而不是对象本身。相反,如果我们想要复制对象本身,我们需要进行深拷贝。
要创建一个 ArrayList
的浅表副本,我们可以使用 ArrayList
类的 Clone
方法,该方法将返回一个数组列表的新实例,其中包含与原始列表相同的元素。由于是浅表复制,新列表中的元素与原始列表中的元素指向相同的对象。
以下是一个示例代码片段:
using System;
using System.Collections;
class Program
{
static void Main(string[] args)
{
ArrayList orgList = new ArrayList() { "one", "two", "three" };
Console.WriteLine("Original list:");
PrintArrayList(orgList);
ArrayList copyList = (ArrayList)orgList.Clone();
Console.WriteLine("Copy list:");
PrintArrayList(copyList);
Console.WriteLine("Modifying the copy list...");
copyList[0] = "modified";
Console.WriteLine("Copy list:");
PrintArrayList(copyList);
Console.WriteLine("Original list:");
PrintArrayList(orgList);
}
static void PrintArrayList(ArrayList list)
{
foreach (var item in list)
{
Console.WriteLine(item);
}
}
}
该代码使用 ArrayList
类的 Clone
方法创建了一个原始列表的副本,并修改了副本中的第一个元素。当我们输出原始列表时,我们可以看到它没有受到修改的影响。
这就是如何在 C# 中使用 Clone
方法创建 ArrayList
的浅表副本的示例。记住,对于复杂的对象,我们可能需要进行深拷贝。