• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Delegate委托

开发技术 开发技术 3小时前 2次浏览

委托的本质是什么?—-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.委托包含方法,方法内部不能包含委托的实例么?

 


程序员灯塔
转载请注明原文链接:Delegate委托
喜欢 (0)