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

87

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 se compile pas? (Quand je le supprime, <T>il se compile)

Quelle est alors la manière correcte de définir un constructeur par défaut pour une classe générique?

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

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

crayonGâteau
la source

Réponses:

145

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

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

Et si vous avez besoin du Type comme propriété:

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

    public Type TheType { get;}
}
RogerW
la source
6

Et si vous avez besoin d'injecter une instance du type:

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

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