¿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

Respuestas:


145

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

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

11

Y si necesita el Tipo como propiedad:

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

    public Type TheType { get;}
}

6

Y si necesita inyectar una instancia del tipo:

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

    public Cell(T thing)
    {
        Thing = thing;
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.