Oui, il y a différentes surcharges de Action
en prenant un nombre différent de paramètres d'entrée et en ayant une void
type de retour.
Action public delegate void Action()
Action<T> public delegate void Action<T>(T obj)
Action<T1,T2> public delegate void Action<T1,T2>(T1 arg1, T2 arg2)
Action<T1,T2,T3> public delegate void Action<T1,T2,T3>(T1 arg1, T2 arg2, T3 arg3)
...
La première ligne est ce que vous recherchez.
Les versions plus récentes du Framework ont ajouté des surcharges avec encore plus d'arguments. Nombre maximum d'arguments :
- .NET Framework 2.0 : 1
- .NET Framework 3.5 : 4
- .NET Framework 4.0 : 16
- Silverlight : 16
Les actions ont toujours un void
le type de retour. A void
Le type de retour ne doit pas et ne peut pas être spécifié comme paramètre de type générique. En revanche, le Func
définissent des types de retour "réels" et ont toujours au moins un paramètre de type générique pour le type de retour. Voir aquí
Func<TResult> public delegate TResult Func<TResult>()
Func<T,TResult> public delegate TResult Func<T,TResult>(T arg)
Func<T1,T2,TResult> public delegate TResult Func<T1,T2,TResult>(T1 arg1, T2 arg2)
...
.NET Framework 4.0 a ajouté in
y out
aux paramètres de type générique pour la contravariance et la covariance. Voir : Covariance et contravariance dans les génériques . Exemples :
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2)
public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)