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

Odpowiedzi:


145

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

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

11

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

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

    public Type TheType { get;}
}

6

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

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.