2011-05-19 19 views
8

MemberwiseClone() yönteminin nasıl kullanıldığı hakkında kafam karıştı. MSDN'de örneğe baktım ve this anahtar sözcüğünü kullananlar.MemberwiseClone() öğesini nasıl arayabilirim?

Neden diğer nesneler gibi doğrudan GetType() veya ToString() veya ToString() olarak arayamıyorum? Görünmeyen diğer bir yöntem ise ShallowCopy().

Nesne sınıfının parçasıysa, onları neden göremiyorum?

cevap

10

MemberwiseClone() işlevi protected işlevidir, böylece yalnızca kendi türünüzün niteleyicisi aracılığıyla erişebilirsiniz.

+1

lanet. Örneğin, http://msdn.microsoft.com/es-es/library/bcd5672a(VS.80).aspx adresindeki DerivedPoint örneğine bakın, türetilmiş sınıf erişimi doğrudan korunan devralınan üyeler, MemberwiseClone ile yapamam – mjsr

+1

@ voodoomsr: "Anlamıyorum", "korumalı" ne anlama geldiğini anlamadığınızı mı söylüyorsunuz ya da yöntemin neden korunmakta olduğunu anlamıyorsunuzdur? –

+0

@Eric, koyduğum URL'deki örneğe bakın. DerivedPoint örneğinde, devralınan korunan üyelere doğrudan erişir. Anlamadım, neden bu iyi ve ne yapmaya çalışıyorum. – mjsr

6

İşte bir örnek, yaptığım ve şu ana kadar hiç sorun yok.

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

Ve gibi çağrı: ben hala alamadım

var cloned = User.ShallowCopy<User>(); 
İlgili konular