Cette documentation est archivée et n’est pas conservée.

Object.MemberwiseClone, méthode

Crée une copie partielle de l'Object en cours.

Espace de noms : System
Assembly : mscorlib (dans mscorlib.dll)

protected Object MemberwiseClone ()
protected Object MemberwiseClone ()
protected function MemberwiseClone () : Object

Valeur de retour

Copie partielle de l'Object en cours.

La méthode MemberwiseClone crée une copie superficielle en créant un nouvel objet puis en copiant les champs non statiques de l'objet actuel vers le nouvel objet. Si le champ est un type valeur, il est copié bit par bit. S'il s'agit d'un type référence, la référence est copiée, mais l'objet référencé ne l'est pas. Par conséquent, l'objet d'origine et son clone se réfèrent au même objet.

Prenez, par exemple, un objet appelé X qui référence des objets A et B. L'objet B référence à son tour l'objet C. Une copie partielle de X crée le nouvel objet X2 qui référence également les objets A et B. En revanche, une copie complète de X crée un nouvel objet X2 qui référence les nouveaux objets A2 et B2, lesquels sont des copies de A et B. B2 référence, à son tour C2, qui est une copie de C. Utilisez une classe qui implémente l'interface ICloneable pour exécuter une copie complète ou partielle d'un objet.

L'exemple de code suivant illustre la copie d'une instance d'une classe utilisant MemberwiseClone.

using System;

class MyBaseClass {
   public static string CompanyName = "My Company";
   public int age;
   public string name;
}

class MyDerivedClass: MyBaseClass {

   static void Main() {
   
   // Creates an instance of MyDerivedClass and assign values to its fields.
   MyDerivedClass m1 = new MyDerivedClass();
   m1.age = 42;
   m1.name = "Sam";

   // Performs a shallow copy of m1 and assign it to m2.
   MyDerivedClass m2 = (MyDerivedClass) m1.MemberwiseClone();
   }
}

import System.*;

class MyBaseClass implements ICloneable
{
    public static String companyName = "My Company";
    public int age;
    public String name;
} //MyBaseClass

class MyDerivedClass extends MyBaseClass
{
    public static void main(String[] args) throws CloneNotSupportedException
    {
        // Creates an instance of MyDerivedClass and assign 
        // values to its fields.
        MyDerivedClass m1 = new MyDerivedClass();
        m1.age = 42;
        m1.name = "Sam";

        // Performs a shallow copy of m1 and assign it to m2.
        MyDerivedClass m2 = (MyDerivedClass)m1.MemberwiseClone();
    } //main
} //MyDerivedClass

import System

class MyBaseClass {
   public static var CompanyName : String = "My Company";
   public var age : int;
   public var name : String;
}

class MyDerivedClass extends MyBaseClass {

   static function Main() {
   
   // Creates an instance of MyDerivedClass and assign values to its fields.
   var m1 : MyDerivedClass = new MyDerivedClass();
   m1.age = 42;
   m1.name = "Sam";

   // Performs a shallow copy of m1 and assign it to m2.
   var m2 : MyDerivedClass = MyDerivedClass(m1.MemberwiseClone());
   }
}

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0, 1.1, 1.0

.NET Compact Framework

Prise en charge dans : 2.0, 1.0
Afficher: