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

理解 C# 中事件和委派的例子

     編輯:關於C語言

在發生其他類別或物件關注的事情時,類別或物件可透過事件通知它們。發送(或引發)事件的類別稱為「發行者」,接收(或處理)事件的類別稱為「訂閱者」。

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
    }
    private void button1_Click(object sender, EventArgs e)
    {
        Car car = new Car();
        car.OnOilWarning += new OilEventHandler(OilWarning); // 關聯事件
        car.FillOil(5);
        car.Startup();
    }
    public void OilWarning(object sender, OilEventArgs e)
    {
        MessageBox.Show("監測到了汽車油量異常,當前油量為:" + e.OilMass);
    }
}
// 事件代理,可以理解為這個事件要傳送什麼內容
// 事件參數我們使用自己寫的 OilEventArgs
public delegate void OilEventHandler(object sender, OilEventArgs e);
// 事件參數
public class OilEventArgs : System.EventArgs
{
    private int _oilMass = 0; // 油量
    public int OilMass
    {
        get
        {
            return _oilMass;
        }
    }
    public OilEventArgs(int oilMass)
    {
        _oilMass = oilMass;
    }
}
// 汽車類別,包含事件成員
// 當啟動汽車時,如果油量少於某一個值,將會觸發事件
public class Car
{
    private int _oilMass = 0; // 油量
    public event OilEventHandler OnOilWarning; // 定義事件成員,事件名稱為 OnOilWarning
    // 給汽車加油
    public void FillOil(int oilMass)
    {
        _oilMass = oilMass;
    }
    // 啟動汽車
    public void Startup()
    {
        if (_oilMass < 10)
        {
            OnOilWarning(this, new OilEventArgs(_oilMass));
        }
    }
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved