C#支持事件簡單描述
作者:佚名
這里介紹C#支持事件,當前很多主流程序語言處理事件的方式各不相同,Delphi采用的是函數指針、Java用改編類來實現、VC用WindowsAPI的消息系統,而C#則直接使用delegate和event關鍵字來解決這個問題。
本文向大家介紹C#支持事件,可能好多人還不了解C#支持事件,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
這里介紹C#支持事件(這個特點也是MSVJ所具有的),當前很多主流程序語言處理事件的方式各不相同,Delphi采用的是函數指針(這在Delphi中的術語是“closure”)、Java用改編類來實現、VC用WindowsAPI的消息系統,而C#則直接使用delegate和event關鍵字來解決這個問題。下面讓我們來看一個例子,例子中會給大家舉出聲明、調用和處理事件的全過程。
- //首先是指代的聲明,它定義了喚醒某個函數的事件信號
- 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 < 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;
- }
- }
在主函數中,我們創建了一個game對象和一個裁判對象,然后我們通過改變比賽分數,來觀察裁判對此會有什么響應。以上介紹C#支持事件。
【編輯推薦】
責任編輯:佚名
來源:
博客園