2009-02-26 44 views
18

我已經粘貼從喬恩斯基特的C#的一些代碼在深入現場:使用動作時,lambda表達式中的()是什麼意思?

static void Main() 
{ 
    // First build a list of actions 
    List<Action> actions = new List<Action>(); 
    for (int counter = 0; counter < 10; counter++) 
    { 
     actions.Add(() => Console.WriteLine(counter)); 
    } 

    // Then execute them 
    foreach (Action action in actions) 
    { 
     action(); 
    } 
} 

http://csharpindepth.com/Articles/Chapter5/Closures.aspx

通知行:

actions.Add(()

什麼的()是指在括號內嗎?

我見過幾個lambda表達式的例子,代表,使用Action對象等,但我沒有看到這種語法的解釋。它有什麼作用?爲什麼需要?

回答

31

這是聲明不帶任何參數的lambda表達式的簡寫形式。

() => 42; // Takes no arguments returns 42 
x => 42; // Takes 1 argument and returns 42 
(x) => 42; // Identical to above 
+0

dang語法突出顯示錯誤 – Will 2009-02-26 14:30:34

5

這是一個不帶參數的lambda表達式。

1

它表示沒有參數的匿名函數。

2

MSDN。表達式lambda採用(輸入)=>表達式的形式。所以lambda like()=>表達式表示沒有輸入參數。 Action的簽名不需要參數

2

這一行的作用是使用lambda表達式向列表中添加一個匿名Action,該表達式不帶任何參數(這就是()存在的原因)並且不返回任何內容,因爲它僅打印計數器的實際值。

3

我想到這樣的羔羊:

(x)=> {return x * 2; }

但是,只有這一點很重要:

X)=> {返回X * 2; }

我們需要=>要知道,這是一個lambda代替鑄造,因此,我們得到這個:

X => X * 2

(抱歉沒有格式化代碼代碼,這是因爲你不能在代碼中使用粗體。)

相關問題