您的位置:首页 > 移动开发 > Unity3D

unity c# 事件

2016-03-19 21:36 363 查看
委托的弊端

委托不禁可以使用 += 操作还可以使用 = 操作

如果我们有两个类 SkillUIView 和 EquipMentUIView 俩个类中同时监听一个委托

methodDelegate.DataChangeNotice += SkillUIDataChange;

methodDelegate.DataChangeNotice += EquipMentUIDataChange;

这个时候是没有问题的。

但如果我们不小心把SkillUIView类中的委托监听写成了

methodDelegate.DataChangeNotice = SkillUIDataChange;

那么就导致EquipMentUIView中收不到委托的通知。

事件只允许使用+=符号,这样就可以避免这种情况的发生。

当时用委托时,一般会出现两种角色:广播者和订阅者。

广播者是包含委托字段的类。他决定何时调用委托广播。

订阅者是方法目标的接收者,通过在广播者的委托上调用+=和-=,决定何时开始和结束监听。一个订阅者不知道也不干涉其他的订阅者。

事件是这一模式的正式化的语言形态。事件是只显示委托中广播/订阅需要的子特性的结构。使用事件的主要目的在于:保护订阅者互不影响。

我们可以这样来声明一个事件

public delegate void DataChange();
public event DataChange DataChangeNotice;

使用方法和委托的一样,只是只允许使用+=操作符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: