c#中的事件

Ritchie里奇發表於2024-11-29

事件

事件是基於委託的
關鍵字:event

使用

namespace ConsoleApp;

// 委託 delegate 可以放在類外面,事件 event 不可以。
public delegate double CalculateFunction(double x, double y);

class Program
{

    // 定義事件
    public static event CalculateFunction calFuncEvent;
    
    static double Add(double x, double y) => x + y;
    
    // 事件處理程式 Test3
    static double Test3(double x, double y)
    {
        Console.WriteLine($"事件實現 Add >_<");
        return Add(x, y);
    }
    
    static void Main(string[] args)
    {
        // 例項化委託(訂閱)
        calFuncEvent += Test3;
        // 取消訂閱
        // calFuncEvent -= Test3;
        
        // 啟用事件
        calFuncEvent?.Invoke(12, 34);
    }
}

與委託的區別

委託是型別,事件是型別成員
事件是被限制了的委託

相關文章