89 votes

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 ?

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

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

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

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

149voto

Trevor Pilley Points 7304

Vous ne fournissez pas le paramètre de type dans le constructeur. C'est ainsi que vous devez procéder.

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

11voto

RogerW Points 41

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

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

    public Type TheType { get;}
}

6voto

Peerhenry Points 149

Et si vous devez injecter une instance du type :

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X