查看: 51|回复: 3

C# 匿名方法

[复制链接]
  • TA的每日心情
    难过
    2016-4-26 10:45
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2019-5-20 21:11:31 | 显示全部楼层 |阅读模式
    我们已经提到过,委托是用于引用与其具有相同标签的方法。换句话说,您可以使用委托对象调用可由委托引用的方法。
    匿名方法(Anonymous methods) 提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。
    在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。

    编写匿名方法的语法
    匿名方法是通过使用 delegate 关键字创建委托实例来声明的。例如:
    delegate void NumberChanger(int n);...NumberChanger nc = delegate(int x){    Console.WriteLine("Anonymous Method: {0}", x);};
    代码块 Console.WriteLine("Anonymous Method: {0}", x); 是匿名方法的主体。
    委托可以通过匿名方法调用,也可以通过命名方法调用,即,通过向委托对象传递方法参数。
    例如:
    nc(10);实例
    下面的实例演示了匿名方法的概念:
    实例using System;

    delegate void NumberChanger(int n);
    namespace DelegateAppl
    {
        class TestDelegate
        {
            static int num = 10;
            public static void AddNum(int p)
            {
                num += p;
                Console.WriteLine("Named Method: {0}", num);
            }

            public static void MultNum(int q)
            {
                num *= q;
                Console.WriteLine("Named Method: {0}", num);
            }

            static void Main(string[ args)
            {
                // 使用匿名方法创建委托实例
                NumberChanger nc = delegate(int x)
                {
                   Console.WriteLine("Anonymous Method: {0}", x);
                };
                
                // 使用匿名方法调用委托
                nc(10);

                // 使用命名方法实例化委托
                nc =  new NumberChanger(AddNum);
                
                // 使用命名方法调用委托
                nc(5);

                // 使用另一个命名方法实例化委托
                nc =  new NumberChanger(MultNum);
                
                // 使用命名方法调用委托
                nc(2);
                Console.ReadKey();
            }
        }
    }


    当上面的代码被编译和执行时,它会产生下列结果:
    Anonymous Method: 10Named Method: 15Named Method: 30
    您需要登录后才可以回帖 登录 | 注册青鸟豆号

    本版积分规则

    Copyright 1999-2019 Beijing Aptech Beida Jade Bird Information Technology Co.,Ltd

    北大青鸟IT教育 北京阿博泰克北大青鸟信息技术有限公司 版权所有

    京ICP备11045574号-3 京公网安备11010802013845号

    快速回复 返回顶部 返回列表