Eine Methode DoSomething
gegeben, die eine (parameterlose) Funktion übernimmt und in irgendeiner Weise verarbeitet. Gibt es eine bessere Möglichkeit, die "Überladungen" für Funktionen mit Parametern als das unten stehende zu erstellen?Korrektes Currieren in C#
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);
}
Hier sind ein paar Beiträge, die interessant sein könnten, wenn Sie versuchen, in C# curry: http://blogs.msdn.com/wesdyer/archive /2007/01/29/currying-and-partial-function-application.aspx http://diditwith.net/2007/10/23/BuildingFunctionsFromFunctionsPart2FunctionComposition.aspx –
Haben Sie diesen Blogpost überprüft? [http://mikehadlow.blogspot.com/2008/03/currying-in-c-with-oliver-sturm.html](http://mikehadlow.blogspot.com/2008/03/currying-in-c with-oliver-sturm.html) – rodbv
+1 für den Web-Link - Sie werden ein wirklich solides Verständnis einiger weniger verstandener Konzepte bekommen, wenn Sie auch den zugehörigen Fibonacci-Beitrag lesen: http://blogs.msdn.com/b /wesdyer/archive/2007/02/02/anonymous-recursion-in-c.aspx – Jordan