1. 程式人生 > >C#委託事件入門

C#委託事件入門

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();		

		
	}
}