我以Lambda表达式开始了解如何定义使用它的匿名方法。Lambda表达式中的多个句子
我有以下简单的代码:
delegate void AddNumber(int number);
class LambdaExpressionSample
{
static void Main(string[] args)
{
AddNumber method = r => Console.WriteLine(r + r);Console.Read();
method(1);
}
}
我想的是,该方法将等于这个:
AddNumber method = new AddNumber(delegate(int number)
{
Console.WriteLine(number+number);
Console.Read();
});
但与lambda表达式的代码无法正常工作因为lambda表达式显然以分号“;”结束在Console.WriteLine之后。
我如何使我的方法执行Console.WriteLine和Console.Read使用我的lambda示例?
正如其他人已经回答,你只需要在这里一些花括号。 – 2012-08-03 08:31:24
很少有必要像这里一样制作委托类型。如果你使用的是局部变量,'var'语法可能是最好的方法。对于明确的类型(例如方法参数),我会使用Func <>和Action <>类型。这里你有一个动作,因为没有返回类型,所以你会说'动作'而不是'AddNumber'。调用这个委托'AddNumber'意味着它做了什么,但是这种类型没有任何意义。我更喜欢让类型描述委托的签名,并将变量的名称赋予其含义。 –
2012-08-03 08:39:50