C#支持事件簡(jiǎn)單描述
本文向大家介紹C#支持事件,可能好多人還不了解C#支持事件,沒(méi)有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。
這里介紹C#支持事件(這個(gè)特點(diǎn)也是MSVJ所具有的),當(dāng)前很多主流程序語(yǔ)言處理事件的方式各不相同,Delphi采用的是函數(shù)指針(這在Delphi中的術(shù)語(yǔ)是“closure”)、Java用改編類(lèi)來(lái)實(shí)現(xiàn)、VC用WindowsAPI的消息系統(tǒng),而C#則直接使用delegate和event關(guān)鍵字來(lái)解決這個(gè)問(wèn)題。下面讓我們來(lái)看一個(gè)例子,例子中會(huì)給大家舉出聲明、調(diào)用和處理事件的全過(guò)程。
- //首先是指代的聲明,它定義了喚醒某個(gè)函數(shù)的事件信號(hào)
- public delegate void ScoreChangeEventHandler (int newScore, ref bool cancel);
- //定義一個(gè)產(chǎn)生事件的類(lèi)
- public class Game
- {
- // 注意這里使用了event關(guān)鍵字
- 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;
- }
- }
- }
- // 處理事件的類(lèi)
- public class Referee
- {
- public Referee (Game game)
- {
- // 裁判負(fù)責(zé)調(diào)整比賽中的分?jǐn)?shù)變化
- game.ScoreChange += new ScoreChangeEventHandler (game_ScoreChange);
- }
- // 注意這里的函數(shù)是怎樣和ScoreChangeEventHandler的信號(hào)對(duì)上號(hào)的
- 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!");
- }
- }
- }
- // 主函數(shù)類(lèi),用于測(cè)試上述特性
- public class GameTest
- {
- public static void Main ()
- {
- Game game = new Game ();
- Referee referee = new Referee (game);
- game.Score = 70;
- game.Score = 110;
- }
- }
在主函數(shù)中,我們創(chuàng)建了一個(gè)game對(duì)象和一個(gè)裁判對(duì)象,然后我們通過(guò)改變比賽分?jǐn)?shù),來(lái)觀察裁判對(duì)此會(huì)有什么響應(yīng)。以上介紹C#支持事件。
【編輯推薦】