1:什么是委托
委托就是持有一个或者多个方法的对象!并且该对象可以执行,可以传递。
1.1: 声明委托类型
委托可以持有方法,可以声明它是一种应用类型
声明关键字:delegete void ActCute();
定义委托类型的对象
ActCute actCute;
1.2: 给委托对象赋值
class Dog{
public void WagTail(){....}
}
ActCute del = null;
Dog dog = new Dog("jock");
Cat cat = new Cat("Tom");
del = dog.WagTail;
del += cat.InnocentLook;
del();
1.3 :使用委托类型
像调用函数一样使用委托类型
actCute();
2. Lambda表达式
del += () =>
{
Console.Write("do nothing");
};
3. 事件
3.1. 事件触发和注册
事件发生时,会通知所有关注该事件的订阅者。
想在事件发生时被通知,必须注册以表示关注。
3.2. 用程序语言解释
事件发生时,通知订阅者,就是调用订阅者的关注函数。
注册,就是告诉发布者调用哪一个注册函数。
3.3. 事件声明
delegate void Handler();
public event Handler NewDog;
NewDog 是一个成员,并且会被隐式自动初始化为null
3.4.事件订阅
NewDog += 方法
NewDog += 方法
方法可以是:实例方法,静态方法,匿名方法,lambda表达式
3.5 事件触发
事件可以理解成一种封装受限制得委托
if(NewDog != null)
{
NewDog();
}