Jaka jest składnia domyślnego konstruktora dla klasy ogólnej?

86

Czy jest zabronione w C # implementowanie domyślnego konstruktora dla klasy ogólnej?

Jeśli nie, dlaczego poniższy kod się nie kompiluje? (Kiedy <T>usuwam, kompiluje się)

Jaki jest zatem prawidłowy sposób definiowania domyślnego konstruktora dla klasy generycznej?

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

Błąd czasu kompilacji : Błąd 1 Nieprawidłowy token '(' w deklaracji elementu członkowskiego klasy, struktury lub interfejsu

ołówekCake
źródło

Odpowiedzi:

145

Nie podajesz parametru typu w konstruktorze. Oto jak powinieneś to zrobić.

public class Cell<T> 
{
    public Cell()
    {
    }
}
Trevor Pilley
źródło
11

A jeśli potrzebujesz Type jako właściwości:

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

    public Type TheType { get;}
}
RogerW
źródło
6

A jeśli potrzebujesz wstrzyknąć instancję typu:

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Peerhenry
źródło