En C # que fait where T : class
signifie?
C'est à dire.
public IList<T> DoThis<T>() where T : class
En termes simples, cela contraint le paramètre générique à une classe (ou plus spécifiquement à un type de référence qui pourrait être un type de classe, d'interface, de délégué ou de tableau).
Consultez cet article MSDN pour plus de détails.
C'est une contrainte de type générique . Dans ce cas, cela signifie que le type générique
T
doit être un type de référence (type classe, interface, délégué ou tableau).la source
C'est une contrainte de type sur
T
, spécifiant qu'il doit s'agir d'une classe.La
where
clause peut être utilisée pour spécifier d'autres contraintes de type, par exemple:Pour plus d'informations, consultez la page MSDN sur la
where
clause ou les contraintes de paramètres génériques .la source
where T : class, IComparable, new()
Cela se limite
T
aux types de référence . Vous ne pourrez pas y mettre de types valeur (struct
s et types primitifs saufstring
).la source
cela signifie que le type utilisé
T
lorsque la méthode générique est utilisée doit être une classe - c'est-à-dire qu'il ne peut pas être une structure ou un nombre intégré commeint
oudouble
la source
where T: class
signifie littéralement queT has to be a class
. Il peut s'agir de n'importe quel type de référence. Maintenant , chaque fois que le code appelle votreDoThis<T>()
méthode , il doit fournir une classe pour remplacer T . Par exemple, si je devais appeler votreDoThis<T>()
méthode, je devrai l'appeler comme suit:Si votre metthod ressemble à ce qui suit:
Ensuite, partout où T apparaît dans votre méthode, il sera remplacé par MyClass. Ainsi, la méthode finale que le compilateur appelle ressemblera à ce qui suit:
la source
new T()
n'est pas possible avecwhere T : class
. vous devez spécifierwhere T: new()
pour être autorisé à le faire.C'est ce qu'on appelle une contrainte de paramètre de type. En fait, il contraint ce que peut être le type T.
Contraintes sur les paramètres de type (Guide de programmation C #)
la source
T représente un type d'objet de, cela implique que vous pouvez donner n'importe quel type de. IList: si IList s = new IList; Maintenant s.add ("Toujours accepter la chaîne.").
la source
Ici, T fait référence à une classe, ce peut être un type de référence.
la source
«T» représente un type générique. Cela signifie qu'il peut accepter n'importe quel type de classe. L'article suivant peut vous aider:
la source