c#之匿名函数与lambda表达式

1.匿名函数的概念

匿名函数按字面意思解读就是没有名字的函数。

匿名函数的使用主要是配合委托和事件进行使用。

脱离委托和事件是不会使用匿名函数的

2.匿名函数的基本语法

delegate(参数列表)

{

   函数逻辑

};

匿名函数的使用场景:

1.函数中传递委托参数时

2.委托或事件赋值时

3.匿名函数的使用

代码示例:

//1.无参无返回值的匿名函数
Action a=delegate()
{
    Console.WriteLine("匿名函数调用")
};

a();//调用函数

//2.有参
Action<int,string> b=delegate(int a,string b)
{
   Console.WriteLine(a);
   Console.WriteLine(b);
}

b.(100,"123");

//3.有返回值
Func<string> c=delegate()
{
  return "123";
}

Console.WriteLine(c());

//4.作为函数参数传递
Test t=new Test();
t.Dosomethin(100,delegate()
{
  Console.WriteLin("随参数传递的匿名函数逻辑")
});

4.匿名函数的缺点

匿名函数添加到委托或事件中后,不记录无法单独移除

5.lambda表达式的概念

可以将lambda表达式直接理解为匿名函数的简写,它除了写法不同外,使用上和匿名函数一模一样,都是和委托或者事件配合使用

6.lambda表达式的语法

lambda表达式(参数列表)=>

{

   函数体

};

7.闭包

内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止

注意:该变量提供的值并非变量创建时的值,而是父函数范围的最终值。

如下代码示例:

public event Action action;
action=()=>
{
  Console.WriteLine(value);
};

for(int i=0;i<10;i++)
{
    action+=()=>
   {
      Console.WriteLine(i);
   };
}
//这里打印10个10,因为父函数范围最终值为10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值