C#泛型委托与Lambda总结

原文链接:http://www.xuebuyuan.com/456117.html

命名方法委托

class MyDelegateTest
{
        //步骤1,声明delegate对象
        public delegate void MyDelegate(string name);
         这是我们欲传递的方法,它与MyDelegate具有相同的参数和返回值类型
        public static void MyDelegateMethod(string name)
        {
            Console.WriteLine("Hello,{0}", name);
        }

        public static void Main()
        {
            // 步骤2,创建delegate对象
            MyDelegate md = new MyDelegate(MyDelegateTest.MyDelegateMethod);

            // 步骤3,调用delegate
            md("Michael");

            Console.ReadLine();
        }
}
匿名方法委托
class AnonymousDelegate
{
        private delegate void MyDelegate(string name);
        public static void Main()
        {
            MyDelegate myDelegate = delegate(string name)
            {
                Console.WriteLine(name);
            };

           myDelegate("Michael");

           Console.ReadLine();
        }
}


Lambda表达式
Lambda表达式是C#3.0的一种新语法,语法简洁为编写匿名方法提供了更简明的函数式的句法. 

class LambdaTest
{
        private delegate void MyDelegate(string name);
        public static void Main()
        {
            //匿名委托
            MyDelegate myDelegate = (name) => { Console.WriteLine(name); }; 

            //调用委托
            myDelegate("Michael");

            Console.ReadLine();
        }
}
使用Lambda表达式更简洁,为什么那么简洁.其实是编译器为我们做了很多事情.  MyDelegate myDelegate = (name) => { Console.WriteLine(name); }; 这句话编译器在编译的时候会为我们生成一个私有的静态方法.透过ILDASM可以看到。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值