今天是学习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;
- 在非事件所在的类中,只能对事件进行绑定(+=)和解绑定(-=)
- 在事件所在的类中,可以对事件进行赋值(=)、调用、绑定(+=)和解绑定(-=)