C#自定義委託事件的使用

using System;

public class Program
{
    public static void Main()
    {
        // 創建一個計算器對象
        Calculator calculator = new Calculator();

        // 訂閱事件
        calculator.Calculated += OnCalculated;

        // 計算並觸發事件
        calculator.Calculate(10, 5);
    }

    // 定義事件處理程序
    private static void OnCalculated(object sender, CalculationEventArgs e)
    {
        Console.WriteLine($"計算結果:{e.Result}");
    }
}

// 自定義委託類型
public delegate void CalculationEventHandler(object sender, CalculationEventArgs e);

// 定義事件參數類型
public class CalculationEventArgs : EventArgs
{
    public int Result { get; set; }
}

// 定義計算器類
public class Calculator
{
    // 定義事件
    public event CalculationEventHandler Calculated;

    // 計算方法
    public void Calculate(int num1, int num2)
    {
        // 執行計算
        int result = num1 + num2;

        // 觸發事件
        if (Calculated != null)
        {
            CalculationEventArgs args = new CalculationEventArgs();
            args.Result = result;
            Calculated(this, args);
        }
    }
}

在這個例子中,我們首先定義了一個自定義委託類型CalculationEventHandler和一個事件參數類型CalculationEventArgs。然後,我們創建了一個Calculator類,它定義了一個Calculated事件和一個Calculate方法。在Calculate方法中,我們執行了一個簡單的加法計算,然後通過觸發Calculated事件來通知其他對象。在主函數中,我們創建了一個Calculator對象並訂閱了Calculated事件,然後執行了一個計算。當事件被觸發時,事件處理程序就會被調用並輸出計算結果。

需要注意的是,在觸發事件之前,我們先判斷了事件是否為空,這是一種好的習慣。如果沒有這個判斷,當沒有訂閱事件時,事件可能會為空,導致空引用異常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值