lambda详解
我们用委托来解释lambda表达式
请看下面的代码块
static void Main(string[] args)
{
delAdd del = Add;
Console.WriteLine(del(10,20));
Console.ReadKey();
}
delegate int delAdd(int x, int y);
public static int Add(int x, int y)
{
return x + y;
}
这段代码有一个add的方法和一个委托
正常使用是如上所示,难免会感觉代码冗长
下面我们使用匿名方法来实现
static void Main(string[] args)
{
delAdd del = delegate(int x,int y) {
return x + y;
};
Console.WriteLine(del(10,20));
Console.ReadKey();
}
delegate int delAdd(int x, int y);
是不是感觉代码更加的简洁了呢
下面我们用lambda表达式来实现add方法(代码量少了很多)
static void Main(string[] args)
{
delAdd del = (x,y)=> x + y;
Console.WriteLine(del(10,20));
Console.ReadKey();
}
delegate int delAdd(int x, int y);
lambda是这样写的:首先定义一个参数列表,=>标记(针对lambda操作符的C#标记,全部来自lambda表达式的演算)紧随其后,然后就是处理这些参数的表达式,lambda表达式的参数可以是隐式类型的(如上代码)也可以标记为显示类型的参数 如下:
delAdd del = (int x,int y)=> x + y;
当你需要对lambda表达式进行不仅仅是加法的的表达式时,你可以用花括号把他们包括在里面 如下:
static void Main(string[] args)
{
delAdd del = (int x,int y)=>
{
Console.WriteLine(x*y);
return x + y;
};
Console.WriteLine(del(10,20));
Console.ReadKey();
}
delegate int delAdd(int x, int y);
当你的委托不需要参数的时候你的lambda表达式应该这样写:
static void Main(string[] args)
{
delAdd del = ()=>
{
return 100 + 100;
};
Console.WriteLine(del());
Console.ReadKey();
}
delegate int delAdd();
没有参数则使用空的括号来表示
总结:C#Lambda操作符=>。这个语法是编写匿名方法的一个简化形式,可以把一堆参数传人语句组进行处理。.NET平台中接受委托对象参数的任意方法都可以用相关的Lambda表达式替换,并且通常都能够大大简化代码。