C#委託事件入門
阿新 • • 發佈:2018-12-10
using System;
namespace delegate_event { // 定義一個貓類 class Cat { // 定義一個名字欄位 private string name; // 建立建構函式,引數為string,給小貓一個初始的名字 // 如果初始化的時候不寫名字會報錯,除非再寫一個過載 public Cat (string name) { this.name = name; } // 定義一個委託,名字隨便起 public delegate void CatShoutDelegate (); // 定義一個事件,事件的型別是委託的名字 public event CatShoutDelegate CatShoutEvent; // 定義一個貓叫的方法 public void Shout () { Console.WriteLine (“喵~,我是{0}”, name); // 當執行貓叫的方法的時候,會判斷委託的例項物件是否存在 // 當存在例項物件的時候,表示事件已經發生了 // 這個時候就該執行被委託的方法了,main函式中是委託的什麼方法就執行什麼方法 if (CatShoutEvent != null) { // 執行事件的委託,就是間接的執行2只老鼠的Run方法 CatShoutEvent(); } } } class Mouse { private string name;
public Mouse (string name) { this.name = name; } public void Run () { Console.WriteLine ("快跑!" + name+"老貓來了!"); } } class MainClass { public static void Main (string[] args) { Cat cat1 = new Cat ("Tom"); Mouse mouse1 = new Mouse ("Jerry"); Mouse mouse2 = new Mouse ("Jack"); // 表示將Mouse1的Run的方法通過例項委託給CatShoutDelegate登記到貓的事件CatShoutEvent裡面。+=就是新增事件的意思 cat1.CatShoutEvent += new Cat.CatShoutDelegate (mouse1.Run); cat1.CatShoutEvent += new Cat.CatShoutDelegate (mouse2.Run); cat1.Shout(); Console.Read(); } }