2011-05-19 14 views
8

Estoy confundido acerca de cómo usar el método MemberwiseClone(). Miré el ejemplo en MSDN y lo utilizan a través de la palabra clave this.¿Cómo puedo llamar a MemberwiseClone()?

¿Por qué no puedo llamarlo directamente como métodos de otros objetos como GetType() o ToString()? Otro método relacionado que no aparece es ShallowCopy().

Si son parte de la clase Object, ¿por qué no puedo verlos?

Respuesta

10

La función MemberwiseClone() es protected, por lo que solo puede acceder a ella a través de un calificador de su propio tipo.

+1

Maldición todavía no lo entiendo. Por ejemplo, mire el ejemplo de DerivedPoint en http://msdn.microsoft.com/es-es/library/bcd5672a(VS.80).aspx, el acceso de clase derivado directamente a los miembros heredados protegidos, con el MemberwiseClone que no puedo hacer que – mjsr

+1

@voodoomsr: "No lo entiendo", ¿está diciendo que no entiende lo que significa "protegido", o que no entiende por qué el método está protegido? –

+0

@Eric mira el ejemplo en la url que puse. En la instancia de DerivedPoint, acceden directamente a los miembros protegidos heredados. No entiendo por qué está bien y lo que intento no hacer. – mjsr

6

Aquí hay un ejemplo, esto es lo que hice y ningún problema hasta el momento.

public class ModelBase 
{ 
    public T ShallowCopy<T>() where T : ModelBase 
    { 
     return (T)(MemberwiseClone()); 
    } 
} 

y lo llaman como:

var cloned = User.ShallowCopy<User>(); 
Cuestiones relacionadas