C# 匿名方法及Lambda表达式

时间:2024-06-27 14:03:56

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