it-swarm.com.de

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

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

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

Wie kann dann ein Standardkonstruktor für eine generische Klasse richtig definiert werden?

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

Fehler beim Kompilieren : Fehler 1 Ungültiges Token '(' in Klasse, Struktur oder Interface-Member-Deklaration 

72
pencilCake

Sie geben den Typparameter nicht im Konstruktor an. So sollten Sie es tun.

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

Und wenn Sie den Typ als Eigenschaft benötigen:

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

    public Type TheType { get;}
}
7
RogerW

Und wenn Sie eine Instanz des Typs einfügen müssen:

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

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