1.什么是delegate委托:
- 定义:委托是一种引用类型,它存储了对某个方法的引用。通过这个引用,可以在运行时动态地调用该方法。
- 声明:委托的声明语法类似于方法的声明,但需要加上
delegate
public delegate void MyDelegate(int i); public MyDelegate myDelegate ; public void Start() { //委托delegate myDelegate = new MyDelegate(DoThing); myDelegate = DoThing;//等号赋值,更改委托内容 myDelegate += DoThing; // 注册事件 myDelegate -= DoThing; // 取消注册事件 myDelegate.Invoke(1); // 通知注册了delegate的对象 } public void DoThing(int i) { Debug.Log(i); }
2.特性与用途
- 类型安全:委托是类型安全的,它确保了只有与委托签名相匹配的方法才能被关联到委托实例上。
- 多播:一个委托实例可以关联多个方法,这称为多播委托。当调用多播委托时,它将依次调用所有关联的方法。这可以通过使用
+=
运算符向委托添加方法,以及使用-=
运算符从委托中移除方法来实现。 - 事件和回调:委托特别用于实现事件和回调方法。事件是委托的一种特殊应用,它允许对象在发生特定事件时通知其他对象。回调方法则是在某个操作完成后被调用的方法。
- 封装对象实例和方法:委托不仅封装了方法,还