web-dev-qa-db-fra.com

Quelle est la syntaxe d'un constructeur par défaut pour une classe générique?

Est-il interdit en C # d'implémenter un constructeur par défaut pour une classe générique?

Sinon, pourquoi le code ci-dessous ne compile pas? (Quand je supprime <T>, il compile bien)

Quelle est la bonne façon de définir un constructeur par défaut pour une classe générique alors?

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

Erreur de compilation : Erreur 1 Jeton non valide '(' dans une déclaration de membre de classe, de structure ou d'interface 

72
pencilCake

Vous ne fournissez pas le paramètre type dans le constructeur. Voici comment vous devriez le faire.

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

Et si vous avez besoin du type en tant que propriété:

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

    public Type TheType { get;}
}
7
RogerW

Et si vous devez injecter une instance du type:

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

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