C#匿名方法

以下展示匿名方法实现委托的简单示例:

    //一般实现
    delegate void AddDel(int x, int y);
    //实现匿名方法的委托
    delegate void AnonymousDel(int x, int y);

    private void Add(int x, int y)
    {
        richTextInfo.ShowInfo($"N:{x + y},x:{x},y:{y}");
    }

    public void AnoymousMethod()
    {
        int x = 1, y = 2;

        //非匿名方法实现,需显式声明Add方法
        AddDel delAdd = Add;
        delAdd(x, y);

        //*************

        //匿名方法实现,无需声明Add方法
        AnonymousDel del = delegate
        {
            int z = 1;//匿名方法内声明的变量只作用于匿名方法内部
            x ++;//匿名方法可操作该方法外部的变量
            richTextInfo.ShowInfo($"A:{x + y},x:{x},y:{y}z:{z}");
        };

        del(x, y);//调用匿名方法
        richTextInfo.ShowInfo($"x:{x}");//此处注意,虽然离开匿名方法,但x值已被改变

        //变量捕获
        //外部变量:是指作用域内包括匿名方法的局部变量或参数
        //捕获的外部变量:是指在匿名方法中使用的外部变量
    }
posted @ 2018-04-28 16:33  vantknispel  阅读(207)  评论(0)    收藏  举报