学习记录:委托和事件

今天是学习C#第17天。。。


委托:

一个事物想执行一个方法但却不知如何实现,而另一个知道怎么去实现,
可以将其委托给知道方法的那个人。

委托就是用来储存方法的结构


委托类型:

  • 委托的别名:代理、句柄
  • 委托是自定义类型
  • 委托是引用类型
返回值                参数
House xxxxxx (float money,float area)
delegate House BuyHouseEventHandle(float money, float area);
即:
delegate  返回值类型  委托类型名(参数列表);

委托对象:

[访问修饰符] 委托类型名称      委托对象的名称;
public BuyHouseEventHandle buyHouseEventHandle; l 

给委托对象赋值:

委托对象 = 方法名;
xiaoming.buyHoueEventHandle = intermediary.BuyHouse;
注意只写方法名,没有括号
Tips:委托对象,保存的是方法的内存地址

委托对象的绑定与解绑定:

xiaoming.buyHoueEventHandle += lianjia.BuyHouse;
xiaoming.buyHoueEventHandle -= lianjia.BuyHouse; 

委托对象的执行:

委托对象(参数列表);
House house = xiaoming.buyHoueEventHandle(1000000,80);

Tips:委托对象为空是不能执行的,执行前先提前判断

匿名函数:

  • 匿名函数就是没有函数名的函数
  • 匿名函数仅限委托绑定
委托对象 += delegate ([参数列表])
{
//方法体
}
xiaoming.buyHoueEventHandle += delegate(float m,float a) 
{
Console.WriteLine("匿名中介在帮忙找房子哟");
return null;
};

回调函数:

public void Marry(BuyHouseEventHandle buyHouse) {
if(buyHouse == null) {
Console.WriteLine(“No!!!!”);
}
else
{
buyHouse(1000000,200);
Console.WriteLine(”有房子啦,我好幸福!");
} }
xiaomei.Marry(intermediary.BuyHouse);

事件:

特殊的委托对象:

[访问修饰符] event 委托类型 事件名称
public event BuyHouseEventHandle buyHouseEvent; 
  • 在非事件所在的类中,只能对事件进行绑定(+=)和解绑定(-=)
  • 在事件所在的类中,可以对事件进行赋值(=)、调用、绑定(+=)和解绑定(-=)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容