2010-09-04 88 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)); 

您實際執行該方法並顯示輸出。