Clone() in C# ist eine String-Methode, die verwendet wird, um die exakte Kopie eines Objekts zurückzugeben. Es gibt die Instanz der Zeichenfolge zurück. Bei der Retoure handelt es sich lediglich um eine Kopie mit einer anderen Ansicht. Diese Methode ist auch nützlich, wenn wir ein Array klonen möchten. Im Fall des Arrays wird eine Kopie des Arrays mit der gleichen Anzahl an Elementen erstellt. Die Clone-Methode in der ICloneable-Schnittstelle ermöglicht das Kopieren von Daten. Für diese Methode müssen Sie keine Parameter angeben.
Syntax der Implementierung von clone()
public object Clone()
Syntax der Implementierung von ICloneable()
public interface ICloneable { object Clone(); }
Wie Sie sehen können, sind keine Parameter erforderlich und es wird eine Referenz zurückgegeben.
Wenn wir ein geklontes Objekt ändern möchten, können wir dies tun, das Originalobjekt wird dabei jedoch nicht geändert.
Die Verwendung der clone()-Methode erleichtert es den Entwicklern, da sie weniger Code schreiben müssen, der leicht zu verstehen ist. Darüber hinaus ist kein weiteres spezielles Attribut erforderlich. es kopiert alle Eigenschaften. Wir können diese Methode nur innerhalb der Klasse aufrufen. Es gibt ein Objekt zurück, daher müssen wir eine Umwandlung durchführen, wenn wir diese Methode verwenden. Es empfiehlt sich, diese Methode in allen zu klonenden Klassen zu implementieren. Wir können dies erreichen, indem wir zwei Techniken anwenden: 1. Tiefes Kopieren 2. Flaches Kopieren.
Beim flachen Kopieren wird ein neues Objekt erstellt und dann die nicht statischen Felder des aktuellen Objekts in das neue Objekt kopiert. Beim Deep Copying hingegen wird ein neues Objekt erstellt und dann die nicht statischen Felder des aktuellen Objekts in das neue Objekt kopiert.
Im Folgenden finden Sie Beispiele, die zeigen, wie wir clone () und die ICloneable-Schnittstelle in C# implementieren können.
Code
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(); } } }
Im obigen Beispiel gibt es eine Zeichenfolge, die wir klonen müssen. Clone() wird verwendet, um dieses String-Objekt zu klonen. Es gibt eine weitere Kopie der Daten zurück. Wir können also sagen, dass der Rückgabewert dieselben Daten mit einer anderen Ansicht sind. Diese Methode erfordert keine Parameter. In der Ausgabe können Sie sehen, dass die ursprüngliche und die geklonte Zeichenfolge angezeigt werden, also die exakte Kopie der ursprünglichen Zeichenfolge.
Ausgabe
Code
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(); } } }
Im obigen Beispiel wird ein Array mit einer Reihe von Elementen definiert, das geklont werden muss. Clone() wird verwendet, um alle Elemente des Arrays zu klonen. In der Ausgabe können Sie sehen, dass eine ähnliche Kopie eines Arrays erstellt wurde.
Ausgabe
Code
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(); } } }
Im obigen Beispiel wird ein Array-Satz definiert, der verschiedene Elemente enthält. Die clone()-Methode wird zum Klonen dieser Elemente verwendet. Wir können auch den Wert jedes Elements dieses geklonten Arrays ändern. Die Ausgabe zeigt zunächst das angegebene Array und das geklonte Array an. Wir können den Wert auch ändern, indem wir seine Indexposition übergeben. Nach der Übergabe des Werts wird das geklonte Array mit einem neuen Wertesatz angezeigt. Das bedeutet also, dass wir den Wert des geklonten Arrays ändern können, wodurch der Wert der ursprünglichen Array-Elemente nicht beeinträchtigt wird.
Ausgabe
Code
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(); } } }
Im obigen Beispiel verwenden wir die ICloneable-Schnittstelle und die clone()-Methode, um das Objekt zu duplizieren. Nachdem Sie den öffentlichen Konstruktor mit einer Reihe von Argumenten aufgerufen haben, sollten Sie anschließend die Klonmethode aufrufen.
Ausgabe
Code
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(); } } } }
Das obige Beispiel definiert einen Stapel mithilfe der Push-Methode zum Einfügen von Elementen. Stapel. Die Methode clone() klont den Stapel mit allen seinen Elementen. Es zeigt den ursprünglichen Stapel und den geklonten Stapel mit allen Elementen an, die foreach verwenden.
Ausgabe
Die Funktion clone() kopiert ein Objekt und gibt die Instanz zurück. Mit dieser Methode können wir ein Array auch mit der gleichen Anzahl von Elementen klonen. Eine Implementierung von „ICloneable“ beinhaltet auch den Aufruf der Clone-Methode zum Kopieren von Daten. Es ist nicht gut, Klone zu implementieren, da es den Code für Entwickler einfacher macht.
Das obige ist der detaillierte Inhalt vonclone() in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!