2010-09-04 77 views
2

当我运行这2行代码我得到了我期望:什么是func代表?

Func<int, int> sqr = x => x * x; 
Console.WriteLine(sqr(3)); 

但为什么返回指定为第二个参数我不明白?它是怎么运行的?当您定义委托时,它必须是:

return-type delegate delName (parameters); 

但是,使用Func委托时,返回类型也被指定为输入参数。任何人都可以解释我是如何工作的吗?如果可能的话,使用指定返回类型作为输入参数的相同概念编写一个小例子。我觉得很难理解发生了什么。

感谢提前:)

回答

3

System.Func的完整声明你所谈论的是

public delegate TResult Func<T, TResult>(T arg) 

所以,当你做

Func<int, int> sqr = x => x * x; 

你声明一种方法od使用一个带有int x并返回x * x的lambda表达式。所以现在sqr正在持有对您的方法的参考。并在以下行

Console.WriteLine(sqr(3)); 

您实际执行该方法并显示输出。