Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Object.MemberwiseClone (Método)

Crea una copia superficial del Object actual.

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

member MemberwiseClone : unit -> Object 

Valor devuelto

Tipo: System.Object
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 de un tipo de valor, se realiza una copia bit a bit de él. 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. En contraste, una copia en profundidad de X crea un nuevo objeto X2 que hace referencia a los nuevos objetos A2 y B2, de los que son las copias A y B. B2, a su vez, hace referencia al nuevo objeto C2, que es una copia C. En el ejemplo se muestra la diferencia entre una operación de copia superficial y de copia en profundidad.

Hay numerosas maneras de implementar una operación de la copia en profundidad si la operación de copia superficial realizada por el método MemberwiseClone no satisface sus necesidades. Entre ellos, se incluyen los siguientes:

  • Llame a un constructor de clase del objeto que se va a copiar para crear un segundo objeto con valores de propiedad tomado del primer objeto. Esto supone que los valores de un objeto están completamente definidos por su constructor de clase.

  • Llame al método MemberwiseClone para crear una copia superficial de un objeto y, a continuación, asigne nuevos objetos cuyos valores son igual que el objeto original a las propiedades o campos cuyos valores sean los tipos de referencia. El método DeepCopy del ejemplo ilustra este enfoque.

  • Serialice el objeto del que se va a hacer una copia profunda y, a continuación, restaure los datos serializados a una variable de objeto diferente.

  • Utilice la reflexión con recursividad para realizar la operación de copia en profundidad.

En el siguiente ejemplo se muestra el método MemberwiseClone. Define un método ShallowCopy que llama al método MemberwiseClone para realizar una operación de copia superficial en un objeto Person. También define un método DeepCopy que realiza una operación de copia en profundidad en un objeto Person.

No hay ningún ejemplo de código disponible o este idioma no es compatible.

En este ejemplo, la propiedad Person.IdInfo devuelve un objeto IdInfo. Como muestra el resultado del ejemplo , cuando un objeto Person se clona llamando al método MemberwiseClone, el objeto Person clonado es una copia independiente del objeto original, solo que comparten la misma referencia de objeto Person.IdInfo. Como resultado, al modificar la propiedad Person.IdInfo del clon, se cambia la propiedad Person.IdInfo del objeto original. Por otro lado, cuando se realiza una operación de copia en profundidad, el objeto Person clonado, incluso su propiedad Person.IdInfo, se puede modificar sin afectar al objeto original.

.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Biblioteca de clases portable

Compatible con: Biblioteca de clases portable

.NET para aplicaciones de la Tienda Windows

Compatible con: Windows 8

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft