Wie lautet die Syntax für einen Standardkonstruktor für eine generische Klasse?

85

Ist es in C # verboten, einen Standardkonstruktor für eine generische Klasse zu implementieren?

Wenn nicht, warum wird der folgende Code nicht kompiliert? (Wenn ich es entferne, wird <T>es kompiliert)

Wie kann man dann einen Standardkonstruktor für eine generische Klasse richtig definieren?

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

Fehler bei der Kompilierung : Fehler 1 Ungültiges Token '(' in der Klassen-, Struktur- oder Schnittstellenelementdeklaration

Bleistiftkuchen
quelle

Antworten:

142

Sie geben den Typparameter nicht im Konstruktor an. So solltest du es machen.

public class Cell<T> 
{
    public Cell()
    {
    }
}
Trevor Pilley
quelle
8

Und wenn Sie den Typ als Eigenschaft benötigen:

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

    public Type TheType { get;}
}
RogerW
quelle
4

Und wenn Sie eine Instanz des Typs injizieren müssen:

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

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