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

C# 事件基礎:本質、四要素與基本概念

     編輯:關於C語言

事件的本質

  • 事件是特殊的委托實例
  • 關鍵字:event
  • 提供型別安全的封裝,限制外部只能訂閱/取消訂閱,不能直接呼叫或清空

事件四要素

要素說明程式碼關鍵字
定義事件宣告事件成員event DelegateType EventName
激發事件事件源主動通知EventName?.Invoke(sender, args)
監聽事件接收者註冊處理器source.EventName += Handler
執行事件處理器邏輯運行委托目標方法執行

標準事件模式


// 1. 事件參數
public class MyEventArgs : EventArgs { public string Message { get; } }

// 2. 委托型別 (可用內建 EventHandler)
public delegate void MyEventHandler(object sender, MyEventArgs e);

// 3. 事件源
public class Publisher
{
    public event MyEventHandler MyEvent;
    protected virtual void OnMyEvent(MyEventArgs e) => MyEvent?.Invoke(this, e);
    public void DoSomething()
    {
        // 業務邏輯...
        OnMyEvent(new MyEventArgs("完成"));
    }
}

// 4. 使用
var pub = new Publisher();
pub.MyEvent += (s, e) => Console.WriteLine(e.Message);
pub.DoSomething();

C# 編譯器對 event 的處理

  • 產生私有委托欄位
  • 產生 `add`/`remove` 存取器(對應 `+=`/`-=`)
  • 外部無法直接讀寫委托欄位,保護封裝性

下一步

掌握基礎後,建議學習:

  1. 內建 EventHandler/EventHandler<TEventArgs> 簡化委托宣告
  2. 事件存取器自訂 (`add`/`remove` 區塊)
  3. 弱事件模式防止記憶體洩漏
  4. 非同步事件引發與 `IAsyncEnumerable` 整合
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved