Tous les délégués Func renvoient une valeur. Quels sont les délégués .NET pouvant être utilisés avec des méthodes qui renvoient void?
Tous les délégués Func retournent quelque chose. tous les délégués d'Action retournent nuls.
Func<TResult>
ne prend aucun argument et retourne TResult:
public delegate TResult Func<TResult>()
Action<T>
prend un argument et ne renvoie pas de valeur:
public delegate void Action<T>(T obj)
Action
est le délégué le plus simple, "nu":
public delegate void Action()
Il y a aussi Func<TArg1, TResult>
et Action<TArg1, TArg2>
(et d'autres jusqu'à 16 arguments). Tous ces éléments (à l'exception de Action<T>
) sont nouveaux dans .NET 3.5 (défini dans System.Core).
... ne prend pas d'argument et a un type de retour vide?
Je crois que Action
est une solution à cela.
Tous les délégués Func prennent au moins un paramètre
Ce n'est pas vrai. Ils prennent tous au moins un argument de type, mais cet argument détermine le type de retour.
Donc, Func<T>
n'accepte aucun paramètre et retourne une valeur. Utilisez Action
ou Action<T>
lorsque vous ne souhaitez pas renvoyer de valeur.
Essayez System.Func<T>
et System.Action
Parfois, vous voudrez écrire un délégué pour la gestion des événements. Dans ce cas, vous pourrez tirer parti de System.EvenHandler<T>
qui accepte implicitement un argument de type object
en plus du deuxième paramètre qui doit dériver de EventArgs
. Les gestionnaires d'événements renverront void
J'ai personnellement trouvé cela utile lors des tests pour la création d'un rappel ponctuel dans un corps de fonction.
... ne prend pas d'argument et a un type de retour vide?
Si vous écrivez pour System.Windows.Forms
, vous pouvez également utiliser:
public delegate void MethodInvoker()