事件
事件的定义
- 事件在使用时,就是在委托变量前加上一个
event
关键字。// 定义一个委托 public DeadHandler DeadEvent; class Player { // 定义一个事件 public event DeadHandler DeadEvent; }
事件的使用
- 给事件赋值要使用
+=
。class Game { public Player player = new Player(); public Game() { // 当player实例的死亡事件发生时会调用OnDead函数 player.DeadEvent += OnDead; } public void OnDead() { Console.WriteLine("你牺牲了。"); } } /* * 输出: * 你牺牲了。 */
- 可以用
+=
给事件赋多个值,这样当事件发生时,这些函数都会被调用。class Game { public Player player = new Player(); public Game() { // 当player实例的死亡事件发生时会调用OnDead函数 player.DeadEvent += OnDead; player.DeadEvent += SendMessage; } public void OnDead() { Console.WriteLine("你牺牲了。"); } public void SendMessage() { Console.WriteLine("告诉大家一个事:玩家牺牲了。"); } } /* * 输出: * 你牺牲了。 * 告诉大家一个事:玩家牺牲了。 */
事件的使用步骤
虽然事件的语法比较难,但他的使用总是这么几个固定的步骤。
- 定义事件
// 我们希望有一个死亡事件 public event DeadHandler DeadEvent;
- 定义委托
// 当死亡事件发生时,我们会调用一个函数,委托用于确认这个函数长什么样子。 public delegate void DeadHandler();
- 触发事件
if (HP <= 0) { // 在玩家死亡时去触发这个事件 if (DeadEvent != null) DeadEvent(); }
- 监听事件
player.DeadEvent += SomeFunc; // 当DeadEvent发生时,执行SomeFunc。
- 处理事件
// 当DeadEvent发生时,执行SomeFunc。 void SomeFunc() { }