C# 数组 - Clone() 方法

C# 数组 Clone() 方法创建数组的浅拷贝。这意味着它会同时复制数组结构和元素,但对于引用类型,它只复制引用,而不复制它们指向的对象。

浅拷贝会创建一个与现有对象共享相同实例变量的新对象。

语法

以下是 C# 数组 Clone() 方法的语法 -

public object Clone ();

参数

此方法不接受任何参数 −

返回值

此方法返回一个对象,该对象是数组的浅拷贝。

示例 1:克隆值类型的一维数组

让我们创建一个 clone() 方法的基本示例。由于整数是值类型,因此对克隆对象的更改不会影响原始对象。−

using System;
class Program
{
   static void Main()
   {
      int[] original = { 1, 2, 3 };
      int[] clone = (int[])original.Clone();
      clone[0] = 99;
      Console.WriteLine(string.Join(", ", original));
      Console.WriteLine(string.Join(", ", clone));
   }
}

输出

以下是输出 -

1, 2, 3
99, 2, 3

示例 2:克隆引用类型的一维数组

让我们看另一个clone()方法的示例。数组元素被复制为引用,但在克隆中修改这些引用不会影响原始数组 -

using System;
class Program
{
   static void Main()
   {
       string[] original = { "one", "two", "three" };
       string[] clone = (string[])original.Clone();
       clone[0] = "changed";
       Console.WriteLine(string.Join(", ", original));
       Console.WriteLine(string.Join(", ", clone));
   }
}

输出

以下是输出 -

one, two, three
changed, two, three

示例 3:引用类型的浅拷贝

这是 clone() 方法的另一个示例。这里,原始对象和克隆对象都引用相同的 Person 对象,因此其中一个对象的更改会反映在另一个对象中 -

using System;
class Person
{
   public string Name { get; set; }
}
class Program
{
   public static void Main()
   {

      Person[] original = { 
         new Person { Name = "Aman" }, 
         new Person { Name = "Kaushal" }
      };
      Person[] clone = (Person[])original.Clone();
      clone[0].Name = "Rahul";
      Console.WriteLine(original[0].Name);
      Console.WriteLine(clone[0].Name);
   }
}

输出

以下是输出 -

Rahul
Rahul

csharp_array_class.html