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

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()
    {
    }
}

11

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

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

    public Type TheType { get;}
}

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;
    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.