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

Antworten:


142

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

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

8

Und wenn Sie den Typ als Eigenschaft benötigen:

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

    public Type TheType { get;}
}

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;
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.