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

  • HTC Tutorials

    HTC Tutorial

    21 EYLÜL 2010
  • Miles Fisher

    Miles Fisher

    8 NİSAN 2009
  • National Geographic

    National Geo

    7 Mayıs 2006