我已经学习了很长一段时间,但是刚开始学习C#。我真的很难理解下面的程序是如何产生答案的.101。如果有人能指导我,那就太棒了。
void Main() {
var x = F(n => n+1, n => n*n)(10);
Console.WriteLine("{0}", x);
}
public Func<int,int> F (Func<int,int>p, Func<int,int>q) {
return x => p(q(x));
}
答案 0 :(得分:4)
首先,类型Func<T,U>
是具有类型T
的单个输入和类型U
的输出的函数的委托类型。所以在这个例子中,函数F
有两个输入:p
是一个函数,它接受一个整数作为输入并返回一个整数作为输出,就像q
一样。函数F
也返回Func<int, int>
个对象。 F
返回的函数是首先调用q
的函数,然后调用p
并将q
的输出传递到p
。
在Main
中,添加一个(n => n + 1
)的函数作为p
的值传入,而square函数(n => n * n
)传入{ {1}}。这意味着q
返回一个新函数,该函数接受其输入,将其平方(执行F
的操作)然后添加一个(执行q
的操作)。
最后,p
作为此函数的参数提供,因此结果为10
。