Bon Nourrissage en C#
Une méthode DoSomething
qui prend (sans paramètre) et la fonction qu'il gère d'une certaine façon. Est-il un meilleur moyen de créer des "surcharges" pour les fonctions avec des paramètres que l'extrait de code ci-dessous?
public static TResult DoSomething<TResult>(Func<TResult> func)
{
//call func() and do something else
}
public static TResult DoSomething<T0, TResult>(
Func<T0, TResult> func,
T0 arg0)
{
return DoSomething(() => func(arg0));
}
public static TResult DoSomething<T0, T1, TResult>(
Func<T0, T1, TResult> func,
T0 arg0, T1 arg1)
{
return DoSomething(arg => func(arg, arg1), arg0);
}
public static TResult DoSomething<T0, T1, T2, TResult>(
Func<T0, T1, T2, TResult> func,
T0 arg0, T1 arg1, T2 arg2)
{
return DoSomething(arg => func(arg, arg1, arg2), arg0);
}
- Avez-vous vérifier ce blog? http://mikehadlow.blogspot.com/2008/03/currying-in-c-with-oliver-sturm.html
- Voici quelques postes qui pourraient être intéressantes si vous essayez de curry en C#: blogs.msdn.com/wesdyer/archive/2007/01/29/... diditwith.net/2007/10/23/...
- +1 pour le wesdyer lien vous obtiendrez vraiment une bonne compréhension de quelques moindre compris des concepts si vous avez également lire les Fibonacci post: blogs.msdn.com/b/wesdyer/archive/2007/02/02/...
- msdn liens sont cassés.
InformationsquelleAutor Rauhotz | 2009-01-04
Vous devez vous connecter pour publier un commentaire.
EDIT: Comme indiqué dans les commentaires, c'est l'application partielle plutôt que de nourrissage. J'ai écrit un blog sur ma compréhension de la différence, qui les gens peuvent trouver intéressant.
Bien, ce n'est pas très différent, mais je préfère séparer le nourrissage partie de la "vocation DoSomething" partie:
Alors:
De cette façon, vous pouvez réutiliser le nourrissage du code dans d'autres situations - y compris dans les cas où vous ne souhaitez pas appeler le nouveau retourné délégué immédiatement. (Vous pouvez le curry plus tard, par exemple.)