委托 事件

委托

委托是一种类型,允许将方法当成参数使用。可以降低程序的耦合性。一个委托中可以添加多个方法,但返回值类型,参数数量、类型必须与委托一致。

//使用关键词delegate声明
public delegate void SayHandler(string name);
//定义方法
public void Say(string name)
{
	Console.Write(name);
}


//实例化委托,将方法放入委托中
SayHandler sayHandler=new SayHandler(Say);
//也可以写成
SayHandler sayHandler=Say;

//调用
sayHandler.Invoke("zhangsan");
//Invoke可以省略
sayHandler("zhangsan");


//添加多个方法
sayHandler+=SayHello;
sayHandler+=SayBye;
//移除方法
sayHandler-=SayBye;
//为委托赋值,赋值后委托内只存在此方法
//执行后,如果委托中有多个方法,并有返回值,只得到最后一个方法的返回值
sayHandler=SayBye;
sayHandler.Invoke("zhangsan");

C#内置委托

Func有参有返回值的泛型委托,最后一个参数为返回值类型

//两个参数,分别为int string类型,返回值为string类型
Func<int, string, string> handler

Action无返回值类型

//无参无返回值委托
Action handler
//泛型Action,有参无返回值委托
Action <int,string> handler

事件

事件是委托的一种特殊实例,事件不允许用户进行赋值操作

//使用关键字event声明事件
public event SayHandler handler;

事件不允许用户进行“=”操作,可以使用“+=” “-=”将方法放入事件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值