您的位置:首页 > 编程语言 > C#

匿名方法 Lambda表达式

2016-07-22 10:00 495 查看

    http://www.cnblogs.com/niyw/archive/2010/10/07/1845232.html

  匿名方法 本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法赋值,这样会省代码,多用于回调。

   Func <int,int,int>  plus   =   delegate   (int argl1,int argl2)    { return argl1+argl2;};

  相当于    static int Test1(int argl1,int argl2)

{

    return argl1+argl2;

}

——————————————————

从C#3.0开始,就可以使用Lambda表达式代替匿名方法了。只要有委托参数类型的地方就可以使用Lambda表达式。刚刚的例子可以修改为

Func <int,int,int>  plus   = (a,b)=>{int temp=a+b,return temp;};//return a+b 也行

Console.WriteLine(plus(90,60));

Console.ReadKey();

 Lambda表达式可以简写,当 参数只有一个的时候,可以不加括号,当函数体只有一句的时候,可以不加大括号,也可以不加return。

  Func<int,int>text2=a=>a+2;

_____

Lanbda表达式可以访问外部变量。但是不正确使用会逻辑混乱

int s=5;

Func<int,int> f=x=>x+s;

Console.WriteLine(f(3));//8 结果

s=7;

Console.WriteLine(f(3));//10




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#