Exportar (0) Imprimir
Expandir todo

Object.MemberwiseClone (Método)

Crea una copia superficial del objeto Object actual.

Espacio de nombres: System
Ensamblado: mscorlib (en mscorlib.dll)

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

Valor devuelto

Copia superficial del objeto Object actual.

El método MemberwiseClone crea una copia superficial mediante la creación de un nuevo objeto y la copia posterior de los campos no estáticos del objeto actual en el objeto nuevo. Si un campo es un tipo de valor, se realiza una copia bit a bit del campo. Si un campo es un tipo de referencia, se copia la referencia pero no el objeto al que se hace referencia; por consiguiente, el objeto original y su copia hacen referencia al mismo objeto.

Por ejemplo, considere un objeto denominado X que hace referencia a los objetos A y B. El objeto B, a su vez, hace referencia al objeto C. Una copia superficial de X crea nuevo objeto X2 que también hace referencia a los objetos A y B. Por contraposición, una copia profunda de X crea un nuevo objeto X2 que hace referencia a los nuevos objetos A2 y B2, que son copias de A y B. A su vez, B2 hace referencia al nuevo objeto C2, que es una copia de C. Utilice una clase que implemente la interfaz ICloneable para realizar una copia profunda o superficial de un objeto.

En el siguiente ejemplo de código se muestra cómo copiar una instancia de una clase utilizando 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, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2015 Microsoft