Pouvez vous s’il vous plaît expliquez-moi ce que `` veut dire dans la ligne de code suivante ?
Réponses
Trop de publicités?C’est une contrainte sur le paramètre générique. il doit être une classe (ou type de référence) et doit avoir un constructeur sans paramètre par défaut.
Que signifie T ne peut pas être un int, float, double, DateTime ou autre structure (type valeur).
Ça pourrait être une chaîne ou un autre type de référence personnalisée, tant qu’il possède une valeur par défaut ou un constructeur sans paramètre.
Ceux-ci sont de type générique contraintes. Dans votre cas, il y en a deux:
where T : class
Signifie que le type T
doit être un type de référence (et non pas un type de valeur).
where T : new()
Signifie que le type T
doit avoir un paramètre moins de constructeur. Avoir cette contrainte va vous permettre de faire quelque chose comme T field = new T();
dans votre code, vous ne pourrez pas faire autrement.
Vous puis de combiner les deux à l'aide d'une virgule pour obtenir:
where T : class, new()
où T : struct
L'argument de type doit être un type de la valeur. Tout type de valeur à l'exception de prendre la valeur null peut être spécifié. Voir Utilisation de Types Nullables (Guide de Programmation C#) pour plus d'informations.
où T : classe
L'argument de type doit être un type de référence, y compris toute la classe, interface, délégué, ou de type tableau. (Voir la note ci-dessous).
où T : new() L'argument de type doit avoir un public constructeur sans paramètre. Lorsqu'il est utilisé conjointement avec d'autres contraintes, la contrainte new() doit être spécifié en dernier.
où T : [nom de classe de base]
L'argument de type doit être ou dériver de la classe de base spécifiée.
où T : [nom de l'interface]
L'argument de type doit être ou implémenter l'interface spécifiée. Plusieurs contraintes d'interface peut être spécifié. Le contraignantes à l'interface peut également être générique.
où T : U
Le type de l'argument fourni pour T doit être ou dériver de l'argument fourni de U. Ceci est appelé une contrainte de type naked.
new() : Si la contrainte new(), cela signifie type T doit utiliser un constructeur sans paramètre, donc un objet peut être instancié à partir-voir par défaut des constructeurs
classe : Signifie T doit être un type référence donc il ne peut pas être un int, float, double, DateTime ou une autre structure (type valeur).