Delegate委托
委托的本质是什么?----Clas(类),继承自一个特殊类 MulticastDelegate,自己在定义类的时候是无法去继承的;--包含的有构造函数+方法
这个类的构造函数参数---Method--方法
1.ILSply反编译--委托的本质其实是一个类
2.委托本质是一个类,这个类的构造函数参数---Method--方法
3.委托可以通过New来实例化,要求传递一个和这个委托的参数和返回值完全匹配的方法,委托有什么参数(几个,什么类型)---完全匹配
//4.---委托的实例--可以直接指向一个和这个委托参数+返回值完全匹配的方法;--语法糖--编译器给我们提供额便捷功能--new WithReturnNoPara();省略掉了
//5.执行委托实例的Invoke方法--去执行这个委托实例化的指向的这个方法---执行方法;
//6.就可以执行这个实例内部的三个方法
//7.多种实例化:new、 直接指向一个方法,指向一个Lambad表达式
SayHiDalegate sayHiDalegate = new SayHiDalegate(student.SayHiWuhHan);
SayHiDalegate sayHiDalegate =student.SayHiWuhHan;
student.SayHiperfect(sayHiDalegate);
public void SayHiperfect(SayHiDalegate sayHiDalegate)
{
Console.WriteLine("问候前,招招手。。。");
sayHiDalegate.Invoke();
}
public delegate void SayHiDalegate();
//问题:什么情况下?可以考虑使用委托?
//1.方法内部业务逻辑耦合严重---考虑使用委托
//2.如果多个方法,有很多重复代码---去掉重复代码--逻辑重用---考虑使用委托
//1.委托就是跟一个盒子(箱子)一样,可以把一个行为包含在委托中;
//2.委托包含方法,方法内部不能包含委托的实例么?