委托 匿名函数 Lambda表达式

                委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为,通俗的讲委托就是把方法当做参数来调用。

 

 

                             

 class FristPage
    {  
        //定义委托
        //委托必须定义在方法体外边
        //delegate  返回类型    委托名称(参数类型  参数);
        delegate void StringDeleGate(string value);
        //委托调用的方法
        //必须是静态的(static)
        public static void GetFrist(string value)
        {
            Console.Write("我是老大" + value);
        }
        public static void GetSecond(string value)
        {
            Console.Write("我是二当家的" + value);
        }
        static void main(string[] args) 
        {
            //实例化委托;把委托方法注册到委托中
            StringDeleGate newdelegate = new StringDeleGate(GetFrist);
            //一个委托可以注册多个方法;执行时,按注册的先后执行
            newdelegate += new StringDeleGate(GetSecond);
            //调用传参
            newdelegate("大爷");
            //删除注册GetFrist方法
            newdelegate -= new StringDeleGate(GetFrist);
            newdelegate("二爷");
            Console.ReadLine();
            //执行时,将先执行GetFrist方法,再执行GetSecond方法
            //委托:先把方法注册到委托上,调用时才执行方法
        }
    }

                 

                 

              匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。可以使用匿名函数来初始化命名委托,或传递命名委托(而不是命名委托类型)作为方法参数。共有两种匿名函数

  • Lambda 表达式

  • 匿名方法

 

 

          

class FristPage
    {
        //匿名函数:是对委托的一种简化
        //定义委托
        delegate void StringDeleGate(string value);
        static void main(string[] args)
        {
            //实例化委托并注册匿名函数
            //语法 delegate(参数类型,参数){ xxxx 方法体}
            //方法体直接写在委托里
            StringDeleGate newDele = delegate(string value) { Console.Write(value + "注册deletegate"); };
            //注册多个匿名函数
            newDele += delegate(string value) { Console.Write(value + value + value + "注册deletegate"); };
            //调用委托
            newDele("大爷");
        }
    }

 

                 “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。 所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x => x * x 读作“x goes to x times x”。

 

                 

 class FristPage
    {
        //Lambda表达式:是对委托的一种简化,是匿名函数的一种
        //定义委托
        delegate void StringDeleGate(string value);
        static void main(string[] args)
        {
            //实例化委托并注册表达式
            //语法:x=>(AAAA)   AAAA:为方法体; X为参数
            //方法体直接写在委托里
            StringDeleGate newDele = (x =>Console.Write( x + "匿名函数"));
            //注册多个Lambda表达式
            newDele += (x => Console.Write(x + "匿名函数"+x));
            //调用委托
            newDele("大爷");
            //Lambda表达式将依次调用进行
        }
    }

 

 

posted @ 2012-06-05 16:24  巴顿道儿  阅读(301)  评论(0编辑  收藏  举报