C# 匿名方法及Lambda表达式

1.匿名方法

   定义:匿名方法不能直接在类中定义,而是在给委托变量赋值的时候,需要赋值一个方法,此时可以“现做现卖”,定义一个匿名方法传递给该委托。

   举实例说明:

   实例一:无参数,无返回值的一个匿名方法

     ////首先定义一个委托

     public delegate void Mydelegate();

    ////声明

     Mydelegate md=delegate(){

           Console.WriteLine("我是Andrew"); }

    ////调用委托

       md();

 

 

    实例二:有参数,无返回值的一个匿名方法

     ////首先定义一个委托

     public delegate void Mydelegate(string msg);

    ////声明

     Mydelegate md=delegate(string msg){

           Console.WriteLine("我是Andrew"+msg); }

    ////调用委托

       md("你是谁?");

 

 实例三:有参数,有返回值的一个匿名方法

     ////首先定义一个委托

     public delegate int Mydelegate(int num1,int num2);

    ////声明

     Mydelegate md=delegate(int n1,int n2){////注意:匿名方法时,无需添加返回的类型

           return n1+n2;}

    ////调用委托

       md(1,2);  ////结果为3

 

2. Lambda表达式的语法格式:
     参数列表 => 语句或语句块
     其中“参数列”中可包含任意个参数(与委托对应),如果参数列中有0个或1个以上参数,则必须使用括号括住参数列,如下:
     () => Console.Write("0个参数")
     I => Console.Write("1个参数时参数列中可省略括号,值为:{0}",i)
     (x,y) => Console.Write("包含2个参数,值为:{0}*{1}",x,y)
 
实例一:无参数,无返回值的一个匿名方法

     ////首先定义一个委托

     public delegate void Mydelegate();

    ////声明

     Mydelegate md=()=>{

           Console.WriteLine("我是Andrew"); }

    ////调用委托

       md();

 

 

    实例二:有参数,无返回值的一个匿名方法

     ////首先定义一个委托

     public delegate void Mydelegate(string msg);

    ////声明

     Mydelegate md=m=>{

           Console.WriteLine("我是Andrew"+m); }

    ////调用委托

       md("你是谁?");

 

 实例三:有参数,有返回值的一个匿名方法

     ////首先定义一个委托

     public delegate int Mydelegate(int num1,int num2);

    ////声明

     Mydelegate md=(x,y)=>{////注意:匿名方法时,无需添加返回的类型

           return x+y;}

    ////调用委托

       md(1,2);  ////结果为3

 
 
 
 
 

 

posted @ 2014-11-04 20:25  阳光少年1712  阅读(209)  评论(0编辑  收藏  举报