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

C# 事件深度解析(一):事件宣告、事件欄位與事件屬性、引發事件模式

     編輯:關於C語言

事件宣告語法

事件分為事件欄位宣告與事件屬性宣告。兩者皆可包含屬性集合、new 修飾詞、四種存取修飾詞組合與 static 修飾詞。事件型別必須為委派型別,且存取性不低於事件本身。

  • 事件欄位:相當於宣告一或多個委派型別欄位,不允許 readonly
  • 事件屬性:相當於宣告委派型別屬性,必須同時包含 get/set 存取子,不允許 virtual/override/abstract

類別內部與外部的存取差異

宣告類別內部,事件成員相當於委派型別的私有欄位/屬性,可自由檢查、修改、呼叫。類別外部僅能作為 +=/-= 右運算元,用於訂閱/取消訂閱,無法直接讀寫底層委派值。

完整範例:Button 的 Click 事件

public delegate void EventHandler(object sender, Event e);
public class Button : Control
{
    public event EventHandler Click;
    protected void OnClick(Event e)
    {
        if (Click != null) Click(this, e);
    }
    public void Reset() { Click = null; }
}

類別內部可直接操作 Click 欄位。外部僅能:

b.Click += new EventHandler(...);  // 訂閱
b.Click -= new EventHandler(...);  // 取消訂閱

OnClick 檢查非 null 後呼叫委派,即「引發事件」模式。語言無特殊引發語法,即為委派呼叫。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved