2011-09-24 5 views
6

Ben bütün miras sınıfları için yöntemler için bazı 'taban' işlevsellik sağlamak isteyen bir temel sınıf var. Benim devralmasını sınıflarındaYeni ve geçersiz kılma arasındaki fark nedir?

yapmak istiyorum:

public override void Setup() 
{ 
    base.Setup(); 
} 

Ama şu anda ben yeni bir anahtar kelime kullanmak zorunda söylüyor.

Nasıl bu yüzden override anahtar kelime kullanmak zorunda olması?

new anahtar sözcüğünü kullanarak ve override'u kullanarak şu anda kullanımım arasında herhangi bir fark var mı?

+3

http://msdn.microsoft.com/en-us/library/ms173153%28v=VS.100%29.aspx – MPelletier

+1

[C# anahtar kelime kullanımı sanal + geçersiz kılma ile yeni arasında] olası bir kopyası (http: // stackoverflow.com/questions/159978/c-keyword-usage-virtualoverride-vs-new) büyük bir bağlantı – MPelletier

+0

teşekkürler. – Blankman

cevap

7

Diyor Eğer baz yöntemini virtual ilan etmedik çünkü böylece. Bunu yaptığınızda, virtual/türetilmiş override anahtar çiftinin anlamı mantıklı olacaktır. Şu anda derleyici, override olmayan bir virtual yöntemini kullanamadığınızı bildiriyor.

+3

... ve sadece 'virtual' yöntemler geçersiz kılınabilir –

4

Eğer, örneğin, bir temel sınıf türü olarak geçtiği zaman bile elde edilen yöntemi kullanılır geçersiz kılma anahtar kullanın. Bu nedenle, temel sınıfta bir sanal olması gerekir, böylece programın, örneğin gerçek türünün ne olduğuna ilişkin bir çalışma zamanı kontrolü yapması gerektiğini bilmesi gerekir. Daha sonra, gerçek türün ne olduğuna bakar ve türetilmiş bir türse, temel sınıftaki söz konusu yöntem için türetilmiş sınıfta bir geçersiz kılma olup olmadığını kontrol eder.

Üye gizleme farklıdır. Temel üye, gerçekten türetilen sınıfın bir örneği olarak iletilirse gizlenir. Nesne bir temel sınıf olarak geçirilirse, temel sınıf yöntemi hala kullanılır. Bir üyeyi gizlerseniz, yeni anahtar kelimeyi kullanmadıysanız bir uyarı alırsınız. Yeni anahtar kelime, yalnızca derleyiciye söylemek gerekirse, temel tip yöntemini gizlemek anlamına gelir.