小故事讲解这四位的前世今生
曾经.Net大佬只有一个Delegete(委托),别人想用委托的时候,必须得用delegate关键
字来定义一个委托,就像这样
1 //定义一个无返回值的,带一个int参数的委托
2 public delegate void myDelegate(int num);
话说,委托生来是为了将方法也作为参数进行传递的。所以后来它学会了发布者/订阅者
模式。比如:
1 public myDelegate m_delegate;
2
3 m_delegate += MyFun;
4
5 public void MyFun(int num)
6 {
7 Debug.Log("my func: " + num);
8 }
但是它有一个弊端,delegate可以使用“=”将所有已经订阅的取消(也可以用+/-对订阅合
并和删除,这是后话,不讲),只保留=后新的订阅,这给了犯罪分子可乘之机。
1 m_delegate = MyFun1; //MyFun订阅被取消,只有MyFun1在订阅中
2
3 public void MyFun1(int num)
4 {
5 Debug.Log("my func1: " + num);
6 }