首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 入門教學:自訂事件 事件參數與處理器(四)

     編輯:關於C語言

自訂事件參數類別

.NET 提供 100 多種 EventArgs 衍生類,但為示範原理,自訂 NumberOfThiefEventArgs:


public class NumberOfThiefEventArgs : EventArgs
{
    public int NumberOfThief;
    public NumberOfThiefEventArgs(int number) { NumberOfThief = number; }
}

Dog 類別 (事件發送者)


class Dog
{
    // 1. 宣告委派
    public delegate void AlarmEventHandler(object sender, NumberOfThiefEventArgs e);

    // 2. 宣告事件
    public event AlarmEventHandler Alarm;

    // 3. 觸發事件方法
    public void OnAlarm(NumberOfThiefEventArgs e)
    {
        if (this.Alarm != null)
        {
            Console.WriteLine("\n狗報警: 有小偷進來了,汪汪~~~~~~~\n");
            this.Alarm(this, e);
        }
    }
}

Host 類別 (事件接收者)


class Host
{
    // 4. 事件處理器
    void HostHandleAlarm(object sender, NumberOfThiefEventArgs e)
    {
        if (e.NumberOfThief <= 1)
            Console.WriteLine("主人: 抓住了小偷!");
        else
            Console.WriteLine("主人: 打110報警, 我家來了{0}個小偷!", e.NumberOfThief);
    }

    // 5. 註冊 (於建構子)
    public Host(Dog dog)
    {
        dog.Alarm += new Dog.AlarmEventHandler(HostHandleAlarm);
    }
}

關鍵點

  • 事件參數繼承 EventArgs,攜帶自訂資料 (小偷數量)。
  • 委派簽名包含 sender 與自訂 EventArgs。
  • 觸發前檢查 Alarm != null 避免空參考例外。
  • 處理器根據參數內容決定回應邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved