1. 程式人生 > >C# 委托與事件

C# 委托與事件

觀察 自動完成 代碼 委托 約定 .html 完成 blog htm

c#事件 委托:

1.類似觀察者模式。
2.當某個對象(類),執行某個動作時,之前委托的事情會自動完成。
(如B,C訂閱A的事件,當A執行某動作,B和C均會按照約定進行對應動作)



使用步驟:

1.定義 delegate委托類,event 事件

//首領A:舉杯委托
public delegate void RaiseEventHandler(string hand);
public class A
{

// 首領A:舉杯事件
public event RaiseEventHandler RaiseEvent;


2.綁定事件對應的函數
// 舉杯
public void Raise(string hand)
{
Console.WriteLine("首領A{0}手舉杯", hand);
// 調用舉杯事件,傳入左或右手作為參數
if (RaiseEvent!=null)
{
RaiseEvent(hand);
}
}







3.編寫約定


public class B
{
A a;

public B(A a){
this.a = a;
a.RaiseEvent += new RaiseEventHandler(a_RaiseEvent); // 訂閱舉杯事件

}

// 首領舉杯時的動作
void a_RaiseEvent(string hand)
{
if (hand.Equals("左"))
{
Attack();
}
}

// 約定的攻擊函數
public void Attack()
{
Console.WriteLine("部下B發起攻擊,大喊:猛人張飛來也!");
}
}



4.測試

class Test{
static void Main(string[] args){
A a = new A(); // 定義首領A

// 首領A左手舉杯
a.Raise("左");

// 首領A右手舉杯
//a.Raise("右");


// 由於B和C訂閱了A的事件,所以無需任何代碼,B和C均會按照約定進行動作。
}
}

原文:http://www.cnblogs.com/yinqixin/p/5056307.html

C# 委托與事件