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

Respostas:


145

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

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

11

E se você precisar do Tipo como uma propriedade:

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

    public Type TheType { get;}
}

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;
    }
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.