Qual é a sintaxe de um construtor padrão para uma classe genérica?

87

É proibido em C # implementar um construtor padrão para uma classe genérica?

Se não, por que o código abaixo não compila? (Quando eu removo <T>, compila)

Qual é a maneira correta de definir um construtor padrão para uma classe genérica, então?

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

Erro de tempo de compilação : Erro 1 token inválido '(' na classe, estrutura ou declaração de membro de interface

pencilCake
fonte

Respostas:

145

Você não fornece o parâmetro de tipo no construtor. É assim que você deve fazer.

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

E se você precisar do Tipo como uma propriedade:

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

    public Type TheType { get;}
}
RogerW
fonte
6

E se você precisar injetar uma instância do tipo:

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

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