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

Jawaban:


144

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

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

11

Dan jika Anda membutuhkan Type sebagai properti:

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

    public Type TheType { get;}
}

6

Dan jika Anda perlu memasukkan contoh dari tipe:

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.