SORU
2 ŞUBAT 2009, PAZARTESİ


Neden't soyut bir C üzerinde soyut bir kurucu oluşturabilir# sınıf?

Soyut bir sınıf yaratıyorum. Benim türetilmiş sınıfların her kurucu belirli bir imza uygulamak zorunda olmak istiyorum. Gibi, ne yapardım onları bir yöntemi uygulamak için zorlamak istedim var mı, bir özet yaptım.

public abstract class A
{
    abstract A(int a, int b);
}

Ancak bir mesaj abstract değiştirici bu maddenin geçersiz olduğunu söylediler. Amacım bu gibi bazı kod zorlamaktı.

public class B : A
{
    public B(int a, int b) : base(a, b)
    {
        //Some other awesome code.
    }
}

Bu C# .NET kodu. Herkes bana yardımcı olabilir?

Güncelleme 1

Bazı şeyler eklemek istedim. İle bitiren bu oldu.

private A() { }

protected A(int a, int b)
{
    //Code
}

Bazı insanlar ne söylediğini yapar, varsayılan olarak özeldir ve bir sınıf uygulamak gerekiyor. Ancak bu imza ile bir kurucu(int a, int b) GÜÇ değildir.

public abstract class A
{
    protected abstract A(int a, int b)
    {


    }
}

Güncelleme 2

Açık, varsayılan yapıcı özel yaptım bu sorunu gidermek için olmalı, ve benim diğer kurucu korumalı. Gerçekten bir şekilde şifrem iş yapmak isteyen ben değilim. O konuyu hallettim. C neden anlamak için arıyorum# buna izin vermez.

CEVAP
3 ŞUBAT 2009, Salı


Yapamazsınız soyut olmayan herhangi bir alt sınıfta geçersiz kılmak gerekir, çünkü soyut anlamı, soyut bir kurucu ve yapıcı geçersiz kılamaz.

Eğer düşünürsen, bu mantıklı, her zaman alt sınıf (yeni operatör) kurucusu ve temel sınıf asla beri.

Genel olarak, C tek yolu konuşma# özel kurucu imza güçlendirmek için kullanmaktır() yenibir parametresiz varlığını zorlar jenerik kısıtlaması, tür parametresi için yapıcı.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • Michael Neal

    Michael Neal

    2 Mayıs 2009