//首先是指代的声明,它定义了唤醒某个函数的事件信号 public delegate void ScoreChangeEventHandler (int newScore, ref bool cancel);
//定义一个产生事件的类 > public class Game { // 注意这里使用了event关键字 public event ScoreChangeEventHandler ScoreChange; int score; // Score 属性 public int Score { get { return score; } set { if (score != value) { bool cancel = false; ScoreChange (value, ref cancel); if (! cancel) score = value; } } }
// 处理事件的类 public class Referee { public Referee (Game game) { // 裁判负责调整比赛中的分数变化 game.ScoreChange += new ScoreChangeEventHandler (game_ScoreChange); }
// 注意这里的函数是怎样和ScoreChangeEventHandler的信号对上号的 private void game_ScoreChange (int newScore, ref bool cancel) { if (newScore $#@60; 100) System.Console.WriteLine ("Good Score"); else { cancel = true; System.Console.WriteLine ("No Score can be that high!"); } } }
// 主函数类,用于测试上述特性 public class GameTest { public static void Main () { Game game = new Game (); Referee referee = new Referee (game); game.Score = 70; game.Score = 110; } }