定义:Lambda表达式可以理解为一个匿名方法,它可以包含表达式和语句,并且用于创建委托或转换为表达式树。
使用“=>”运算符,该运算符左边是匿名方法的输入参数,右边是表达式或语句块。
用法一:创建委托
public class Friend
{
public string Name;
public Friend( string name )
{
Name = name;
}
//事件处理函数,该函数需要符合DinnerHandler委托的定义
public void SendMessage( string message )
{
Console.WriteLine( message );
Console.WriteLine( this.Name + "收到了,准时参加饭局!" );
}
}
public class Dinner
{
//自定义委托
public delegate void DinnerHandler( string msg );
//使用自定义委托类型定义事件,事件名为DinnerEvent
public event DinnerHandler DinnerEvent;
//发出事件
public void OnDinnerComing( string msg )
{
//判断是否绑定了事件处理方法
if( null != DinnerEvent )
{
//触发事件
DinnerEvent( msg );
}
}
static void Main( string[ ] args )
{
Dinner dinner = new Dinner( );
//实例化朋友对象
Friend friend1 = new Friend( "张三" );
Friend friend2 = new Friend( "李四" );
//使用+=来订阅事件,事件绑定 ---方法一
//dinner.DinnerEvent += new DinnerHandler( friend1.SendMessage );
//C# 2.0中使用匿名方法来订阅事件 ---方法二
/*
dinner.DinnerEvent += delegate( string msg )
{
friend1.SendMessage( msg );
};
*/
//C# 3.0中使用Lambda表达式订阅事件 ---方法三
dinner.DinnerEvent += ( msg ) => friend1.SendMessage( msg );
//发出通知,此时只有订阅了事件的对象才能收到通知
dinner.OnDinnerComing( "朋友们,过来我家吃饭啦!" );
Console.ReadKey( );
}
}
用法二:转换为表达式树