C# 委托與事件
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# 委托與事件