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