委托

可以说是 C#的一大特色了,委托在使用时遵循三步走的原则,即定义声明委托、实例化委托以及调用委托。
通常将委托分为命名方法委托、多播委托、匿名委托,其中命名方法委托是使用最多的一种委托。(本质是操作函数地址)
定义方法:
public delegate void MyDelegate();

实例方式

  1. MyDelegate d = new MyDelegate(方法名)
  2. MyDelegate d = 方法名
  3. MyDelegate d = delegate(string name){ Console.WriteLine($"Notification received for: {name}"); };
  4. MyDelegate d = delegate{};
  5. MyDelegate d = name => { Console.WriteLine($"Notification received for: {name}"); };

多播委托

顾名思义,就是一对多的委托,
MyDelegate d;
d += Method1,d += Method2,d += Method3
d(),那么三个委托会一次被调用,这就是多播委托

缺点:容易误操作,导致d被清空,比如 d = Method4.本来是想新增一个委托,这里执行完的结果会是清空d再把Method4赋给d,显然不是我们想要的效果

事件(event)

就是为了解决多播委托容易误操作的问题,想要定义事件,必须先定义委托
定义 :
//定义委托
public delegate void MyDelegate();
//定义事件
public event MyDelegate MyEvent;

posted on 2021-05-11 22:43  逆流而上の鱼  阅读(289)  评论(0)    收藏  举报