1. 程式人生 > >C#的事件(Event)和代理/委託(Delegate)例子

C#的事件(Event)和代理/委託(Delegate)例子

還是看例子最直接。

代理(Delegate)例子:

delegate void MyDelegate(string str,int index);    // 宣告代理

class Test 
{
    public static void Show(string str, int index) // 宣告方法
    {
        Console.WriteLine("Show"+str+index.ToString());
    }

    public static void Main(string[] args)
    {
        MyDelegate md = new
MyDelegate(Show); // 1.例項化代理,傳入方法 md("hello world", 22); // 2.傳入引數 } }

事件結合代理的完整例子:

//事件用到的代理,以般以×××Handler的格式進行命名
private delegate void CryHandler();    // 無參代理

// 玩具小鴨的類
class Duck
{
    // 定義小鴨的唱歌事件
    public event CryHandler DuckCryEvent;

    public Duck()
    {
        // 把小鴨唱歌的事件掛接到Cry方法上
DuckCryEvent += new CryHandler(Cry); // 註冊事件,傳入方法 } // 小鴨唱歌事件對應的處理方法 public void Cry() { Console.WriteLine("我是一隻小鴨,呀呀呀...."); } // 小鴨被搖動 public void BeShaked() //執行方法,引發cry事件 { DuckCryEvent(); // 執行事件,傳入引數 } } class MyClass { public
static void Main3(string[] args) { // 買一隻小鴨 Duck d = new Duck(); // 搖一搖小鴨,它就會調觸發小鴨的Cry事件,小鴨就會唱歌 d.BeShaked(); } }

重要參考: