¿Cuál es la sintaxis de un constructor predeterminado para una clase genérica?

87

¿Está prohibido en C # implementar un constructor predeterminado para una clase genérica?

Si no es así, ¿por qué el código siguiente no se compila? (Sin <T>embargo, cuando lo elimino se compila)

Entonces, ¿cuál es la forma correcta de definir un constructor predeterminado para una clase genérica?

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

Error de tiempo de compilación : Error 1 Token no válido '(' en la declaración de miembro de clase, estructura o interfaz

pastel de lápiz
fuente

Respuestas:

145

No proporciona el parámetro de tipo en el constructor. Así es como debes hacerlo.

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

Y si necesita el Tipo como propiedad:

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

    public Type TheType { get;}
}
RogerW
fuente
6

Y si necesita inyectar una instancia del tipo:

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

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