欢迎光临散文网 会员登陆 & 注册

C#_Lambda表达式

2022-02-10 10:52 作者:Pan_ana  | 我要投稿
  • What

  1. 使用和匿名方法一样

  2. 都是配合委托和事件来使用的

  3. 缺点也是和匿名方法一样

  4. 可以省略参数类型,提供便利

  • Why


  1. 为开发者提供便利


  • How

  1. Action a=()=>{};//声明基本和匿名方法一致

  1. Action<int> a=(int value)=>{};无返回值的

  2. Action<int> a=(value)=>{};//可以省略参数类型的

  1. Func<string,int> a=(value)=>{return 0;}//有返回值的

  • Special【闭包】

  1. 内层方法可以引用包含在它外层的方法的变量

  2. 即使外层的方法已经执行完毕

  3. 在调用外部变量时其生命周期已经被改变(只会去得到变量的最终值进行使用,所以用int  index=i;到达每个变量都是最终值的效果)


public class Test1

{

    public event Action action;

    public Test1()

    {

        int value = 10;

        action = () =>

        {

            Console.WriteLine(value);

            //实例化时value的生命周期已经被改变,只有action置空时才被释放

        };

        for (int i = 0; i < 10; i++)

        {

            //此时的index不是之前的index,就可以达到效果

            // 可以在这里用int index =i;传进去,在调用时10,0。。。9

           action = () =>

            {

                Console.WriteLine(value);

                //调用时不出现10,0。。。9,而是10,10。。。10

            };

        }

    }

}

C#_Lambda表达式的评论 (共 条)

分享到微博请遵守国家法律