C# 中的 Clone() 是一个字符串方法,用于返回对象的精确副本。它返回字符串的实例。返回的只是具有不同视图的副本。如果我们想克隆一个数组,这个方法也很有用。对于数组,它会创建具有相同元素数量的数组的副本。 ICloneable 接口中的 Clone 方法允许复制数据。您不需要为此方法提供任何参数。
实现clone()的语法
public object Clone()
实现 ICloneable() 的语法
public interface ICloneable { object Clone(); }
如您所见,它不需要任何参数并返回一个引用。
如果我们想修改克隆的对象,我们可以,并且这样做不会修改原始对象。
使用clone()方法可以让开发者变得更容易,因为他们需要编写更少的代码并且易于理解。除此之外不需要其他特殊属性;它复制所有属性。我们只能在类内部调用这个方法。它返回一个对象,所以我们在使用这个方法时需要进行强制转换。最好在所有要克隆的类中实现此方法。我们可以通过两种技术来实现:1.深复制2.浅复制。
浅复制是创建一个新对象,然后将当前对象的非静态字段复制到新对象中。另一方面,深度复制是创建一个新对象,然后将当前对象的非静态字段复制到新对象。
下面的例子展示了如何在C#中实现clone()和ICloneable接口。
代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Clone { class Program { static void Main(string[] args) { string s1 = "This is C# programming"; string s2 = (String)s1.Clone(); // Displaying both the strings Console.WriteLine("String to be cloned : {0}", s1); Console.WriteLine("Cloned String : {0}", s2); Console.ReadLine(); } } }
在上面的例子中,我们需要克隆一个字符串。 Clone() 用于克隆这个字符串对象。它返回数据的另一个副本。所以我们可以说返回值与另一个视图是相同的数据。该方法不需要任何参数。在输出中,您可以看到它显示了原始字符串和克隆字符串,这是原始字符串的精确副本。
输出
代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Clone { class Program { static void Main(string[] args) { // array initialization string[] arraytobecloned = { "This", "is", "C#", "clone", "example"}; string[] clonedarray = arraytobecloned.Clone() as string[]; //cloning array // display original and cloned arrays Console.WriteLine(string.Join(",", arraytobecloned)); Console.WriteLine(string.Join(",", clonedarray)); Console.WriteLine(); Console.ReadLine(); } } }
在上面的示例中,定义了一个包含一组元素的数组,需要对其进行克隆。 Clone() 用于克隆数组的所有元素。在输出中,您可以看到它创建了一个类似的数组副本。
输出
代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Clone { class Program { static void Main(string[] args) { string[] arraytobecloned = { "This", "is", "C#", "clone", "example" }; string[] clonedarray = arraytobecloned.Clone() as string[]; Console.WriteLine(string.Join(",", arraytobecloned)); Console.WriteLine(string.Join(",", clonedarray)); Console.WriteLine(); clonedarray[4] = "demo"; // providing new value to cloned array element Console.WriteLine(string.Join(",", arraytobecloned)); // displaying arrays Console.WriteLine(string.Join(",", clonedarray)); Console.ReadLine(); } } }
在上面的例子中,定义了一个数组集合,包含不同的元素。 clone() 方法用于克隆这些元素。我们还可以更改该克隆数组的任何元素的值。输出首先显示给定数组和克隆数组。我们还可以通过传递其索引位置来更改该值。传递值后,它会显示带有一组新值的克隆数组。所以这意味着我们可以修改克隆数组的值,而不会影响原始数组元素的值。
输出
代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Clone { class Employee : ICloneable // implementing ICloneable interface { int empcode; string name; public Employee(int empcode, string name) { this.empcode = empcode; this.name = name; } public object Clone() { return new Employee(this.empcode, this.name); } public override string ToString() { return string.Format("empcode = {0}, name = {1},", this.empcode, this.name ); } } class Program { static void Main() // main method { Employee e1 = new Employee(10, "John"); Employee e2 = e1.Clone() as Employee; Console.WriteLine("1. {0}", e1); Console.WriteLine("2. {0}", e2); Console.ReadLine(); } } }
在上面的例子中,我们使用ICloneable接口和clone()方法来复制对象。使用一组参数调用公共构造函数后,您应该调用克隆方法。
输出
代码
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Clone { class Program { static void Main(string[] args) { //declare and initialize a stack Stack stack1 = new Stack(); stack1.Push(10); stack1.Push(20); stack1.Push(30); stack1.Push(40); stack1.Push(50); Console.WriteLine("Stack elements are..."); foreach (int val in stack1) { Console.WriteLine(val); } Stack stack2 = (Stack)stack1.Clone(); Console.WriteLine("Stack cloned elements are"); foreach (int val in stack2) { Console.WriteLine(val); Console.ReadLine(); } } } }
上面的例子定义了一个栈,使用push方法插入元素。堆。 clone() 方法克隆堆栈及其所有元素。它使用 foreach 显示原始堆栈和克隆堆栈以及所有元素。
输出
clone() 函数复制一个对象并返回实例。使用这种方法,我们可以克隆一个具有相同数量元素的数组。 “ICloneable”的实现还包括调用用于数据复制的克隆方法。实现克隆并不是一件好事,因为它会让开发人员更容易编写代码。
以上是C# 中的克隆()的详细内容。更多信息请关注PHP中文网其他相关文章!