Genel bir sınıf için varsayılan bir kurucunun sözdizimi nedir?


86

C # 'da genel bir sınıf için varsayılan bir kurucu uygulamak yasak mı?

Değilse, aşağıdaki kod neden derlenmiyor? (Kaldırdığımda <T>derler yine de)

Öyleyse genel bir sınıf için varsayılan bir kurucu tanımlamanın doğru yolu nedir?

public class Cell<T> 
{
    public Cell<T>()
    {
    }
}

Derleme Zamanı Hatası : Hata 1 Sınıf, yapı veya arabirim üyesi bildiriminde geçersiz simge '('

Yanıtlar:


144

Yapıcıda type parametresini sağlamazsınız. Bunu nasıl yapmalısın.

public class Cell<T> 
{
    public Cell()
    {
    }
}

11

Ve bir özellik olarak Type'a ihtiyacınız varsa:

public class Cell<T>
{
    public Cell()
    {
        TheType = typeof(T);
    }

    public Type TheType { get;}
}

6

Ve türün bir örneğini enjekte etmeniz gerekirse:

public class Cell<T>
{
    public T Thing { get; }

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.