你可以将一个委托的结果链接成C#中另一个委托的输入吗?

Sno*_*ppy 3 c# delegates chaining

我正在寻找一种方法来链接几个代表,所以一个人的结果成为下一个的输入.我试图在方程求解程序中使用它,其中部分通过不同的方法完成.这个想法是,当你构建方程式时,程序会添加代理并按特定顺序链接它们,因此可以正确解决.如果有更好的方法来解决问题,请分享.

the*_*oop 7

这可能有所帮助:

public static Func<T1, TResult> Compose<T1, T2, TResult>(Func<T1, T2> innerFunc, Func<T2, TResult> outerFunc) {
    return arg => outerFunc(innerFunc(arg));
}
Run Code Online (Sandbox Code Playgroud)

这将执行函数组合,运行innerFunc并将结果传递给outerFunc提供初始参数时:

Func<double, double> floor = Math.Floor;
Func<double, int> convertToInt = Convert.ToInt32;

Func<double, int> floorAndConvertToInt = Compose(floor, convertToInt);

int result = floorAndConvertToInt(5.62);

Func<double, int> floorThenConvertThenAddTen = Compose(floorAndConvertToInt, i => i + 10);

int result2 = floorThenConvertThenAddTen(64.142);
Run Code Online (Sandbox Code Playgroud)