簡體   English   中英

使用Actions時,lambda表達式中的()含義是什么意思?

[英]What does () mean in a lambda expression when using Actions?

我已經粘貼了Jon Skeet的C#In Depth網站的一些代碼:

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對象的使用等幾個例子,但我沒有看到這種語法的解釋。 它有什么作用? 為什么需要它?

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

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

這是一個沒有參數的lambda表達式。

我覺得lambas是這樣的:

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

但只有這一點很重要:

x )=> {return x * 2 ; }

我們需要=>知道它是一個lambda而不是cast,因此我們得到這個:

x => x * 2

(抱歉沒有將代碼格式化為代碼,這是因為你不能在代碼中使事情變得粗體..)

來自MSDN 表達式lambda采用形式(輸入)=>表達式。 所以lambda like()=> expression表示沒有輸入參數。 哪個Action的簽名不帶參數

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM