Clone() en C# est une méthode de chaîne utilisée pour renvoyer la copie exacte d'un objet. Il renvoie l'instance de la chaîne. Le retour n'est qu'une copie avec une vue différente. Cette méthode est également utile si nous voulons cloner un tableau. Dans le cas du tableau, il crée une copie du tableau avec le même nombre d’éléments. La méthode Clone dans l'interface ICloneable permet la copie de données. Vous n'avez pas besoin de fournir de paramètres pour cette méthode.
Syntaxe d'implémentation de clone()
public object Clone()
Syntaxe d'implémentation d'ICloneable()
public interface ICloneable { object Clone(); }
Comme vous pouvez le voir, il ne nécessitera aucun paramètre et renvoie une référence.
Si nous voulons modifier un objet cloné, nous le pouvons, et cela ne modifiera pas l'objet d'origine.
L'utilisation de la méthode clone() facilite la tâche des développeurs car ils doivent écrire moins de code facile à comprendre. Aucun autre attribut spécial n'est requis en plus de cela ; il copie toutes les propriétés. Nous pouvons appeler cette méthode uniquement à l’intérieur de la classe. Il renvoie un objet, nous devons donc effectuer un casting lorsque nous utilisons cette méthode. Il est bon d'implémenter cette méthode dans toutes les classes à cloner. Nous pouvons y parvenir en utilisant deux techniques 1. Copie profonde 2. Copie superficielle.
La copie superficielle consiste à créer un nouvel objet, puis à copier les champs non statiques de l'objet actuel vers le nouvel objet. D'un autre côté, la copie profonde consiste à créer un nouvel objet, puis à copier les champs non statiques de l'objet actuel vers le nouvel objet.
Vous trouverez ci-dessous les exemples qui montrent comment nous pouvons implémenter l'interface clone () et ICloneable en C#.
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(); } } }
Dans l'exemple ci-dessus, il y a une chaîne que nous devons cloner. Clone() est utilisé pour cloner cet objet chaîne. Il renvoie une autre copie des données. On peut donc dire que la valeur de retour est la même donnée avec une autre vue. Cette méthode ne nécessite aucun paramètre. Dans la sortie, vous pouvez voir qu'il affiche les chaînes originales et clonées, qui sont la copie exacte de la chaîne originale.
Sortie
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(); } } }
Dans l'exemple ci-dessus, un tableau avec un ensemble d'éléments est défini, qui doit être cloné. Clone() est utilisé pour cloner tous les éléments du tableau. Dans le résultat, vous pouvez voir qu'il a créé une copie similaire d'un tableau.
Sortie
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(); } } }
Dans l'exemple ci-dessus, un ensemble de tableaux est défini, contenant différents éléments. La méthode clone() est utilisée pour cloner ces éléments. Nous pouvons également modifier la valeur de n’importe quel élément de ce tableau cloné. La sortie affiche d'abord le tableau donné et le tableau cloné. On peut également modifier la valeur en passant sa position d'indexation. Après avoir transmis la valeur, il affiche le tableau cloné avec un nouvel ensemble de valeurs. Cela signifie donc que nous pouvons modifier la valeur du tableau cloné, ce qui ne perturbe pas la valeur des éléments du tableau d'origine.
Sortie
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(); } } }
Dans l'exemple ci-dessus, nous utilisons l'interface ICloneable et la méthode clone() pour dupliquer l'objet. Après avoir appelé le constructeur public avec un ensemble d'arguments, vous devez ensuite appeler la méthode clone.
Sortie
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(); } } } }
L'exemple ci-dessus définit une pile en utilisant la méthode push pour insérer des éléments. Empiler. La méthode clone() clone la pile avec tous ses éléments. Il affiche la pile d'origine et la pile clonée avec tous les éléments en utilisant foreach.
Sortie
La fonction clone() copie un objet et renvoie l'instance. En utilisant cette méthode, nous pouvons également cloner un tableau avec le même nombre d’éléments. Une implémentation de « ICloneable » inclut également l’appel à la méthode clone pour la copie des données. Il n'est pas bon d'implémenter des clones car cela facilite le code pour les développeurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!