C#泛型委托与Lambda总结

来源:互联网 发布:淘宝网首页石英加热管 编辑:程序博客网 时间:2024/06/05 00:17

原文链接: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可以看到。 

原创粉丝点击