我已经粘贴了Jon Skeet的C#In Depth网站的一些代码:
static void Main() { // First build a list of actions Listactions = new List (); 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
(抱歉没有将代码格式化为代码,这是因为你不能在代码中使事情变粗......)