这里为什么public static int Add2(int a, int b) => { return a + b; }//语句lambda
直接一片红。使用表达式Lambda却没有问题
using System;
namespace 匿名函数与委托
{
class Program
{
public delegate string Del(string str);
public static int Add(int a, int b) => a + b;//表达式lambda
//public static int Add2(int a, int b) => { return a + b; }//语句lambda
static void Main(string[] args)
{
Console.WriteLine("{0}", Add(1,2));
}
}
}
因为你这并不是 lambda 呀。
仔细看:
和
明明有了
{}
,却多了=>
,这样编译器也搞不懂,你是在定义普通方法,还是想用 lambda,你把它搞晕了。实际上,真的是你写错了,并非编译器傻了。如果你非要写带
{}
的 lambda,请这样写:Add2 此时是个委托类型,将其赋值为指定匿名方法。使用的时候,就像是使用普通方法一样。