Apa sintaks untuk konstruktor default untuk kelas generik?

86

Apakah dilarang di C # untuk mengimplementasikan konstruktor default untuk kelas generik?

Jika tidak, mengapa kode di bawah ini tidak dapat dikompilasi? (Ketika saya menghapusnya <T>mengkompilasi)

Apa cara yang benar untuk mendefinisikan konstruktor default untuk kelas generik?

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

Kesalahan Waktu Kompilasi : Kesalahan 1 Token tidak valid '(' di kelas, struct, atau deklarasi anggota antarmuka

pencilCake
sumber

Jawaban:

144

Anda tidak memberikan parameter type di konstruktor. Beginilah seharusnya Anda melakukannya.

public class Cell<T> 
{
    public Cell()
    {
    }
}
Trevor Pilley
sumber
11

Dan jika Anda membutuhkan Type sebagai properti:

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

    public Type TheType { get;}
}
RogerW
sumber
6

Dan jika Anda perlu memasukkan contoh dari tipe:

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Peerhenry
sumber