SORU
9 EYLÜL 2009, ÇARŞAMBA


C#: Yeni karşısında geçersiz kılar

Fark, aşağıdaki arasında ne olduğunu merak:

Durum 1 : Temel Sınıf

public void DoIt();

Durum 1 : Sınıf Miras

public new void DoIt();

Durum 2 : Temel Sınıf

public virtual void DoIt();

Durum 2 : sınıf Miras

public override void DoIt();

Her iki durum 1 ve 2 koştu testlere göre aynı etkiye sahip gibi görünüyor. Bir fark, orada tercih edilen bir yolu var mı?

Teşekkürler

Şiraz

CEVAP
9 EYLÜL 2009, ÇARŞAMBA


Override değiştirici kullanılmış olabilir ve bulunması şarttır sanal yöntemleri soyut yöntemler. Bunun için gösterir son kullanma derleyici tanımlı bir yöntem uygulanması. Bile bu yöntem bir referans denir kullanır, temel sınıf uygulama geçersiz kılma.

public class Base
{
    public virtual void DoIt()
    {
    }
}

public class Derived : Base
{
    public override void DoIt()
    {
    }
}

Base b = new Derived();
b.DoIt();

Türetilmiş arayacak.Eğer bu Temel geçersiz kılar Doİt.Doİt.

Yeni değiştirici bildirir çocuğunuz kullanmak için derleyici sınıf uygulaması üst sınıf yerine uygulama. Herhangi bir kod bu değil sınıf başvuran ancak üst sınıf üst sınıfı kullanacak uygulama.

public class Base
{
    public virtual void DoIt()
    {
    }
}

public class Derived : Base
{
    public new void DoIt()
    {
    }
}


Base b = new Derived();
Derived d = new Derived();
b.DoIt();
d.DoIt();

İlk Ara Taban.Bana bak, sonra Türetilmiş.Doİt. Etkili aynı adı, türetilmiş bir yöntem Bankası yöntem geçersiz kılma yerine var olan tamamen ayrı iki yöntem ediyorlar.

Kaynak: Microsoft blog

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • CruzerLite

    CruzerLite

    1 EKİM 2011
  • Matt Steffanina

    Matt Steffan

    1 EYLÜL 2011
  • Pocketnow

    Pocketnow

    14 EKİM 2007