簡述
本文主要介紹c#的事件機制的定義,使用場景
什麼是事件及其使用場景?
事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。
事件的模型
事件的模型為發佈-訂閱模型,分為发布器(publisher)和訂閱器兩種對象 。發佈器定義了事件委託,事件的觸發條件等。订阅器(subscriber) 定義描述了事件觸發的動作。
定義實現一個事件
需求
每次銷售都會觸發,檢查一次庫存函數
訂閱器
//訂閱器
public class checkproduce {
//檢查庫存值
public void check()
{
Console.WriteLine("觸發庫存檢查函數");
}
}
發佈器
public class SaleData {
//這裡定義了一個委託類型,訂閱器通過委託類型註冊到程序中
//注意委託類型的和事件的方法名要保持一致
public delegate void checkNum();
public event checkNum checkData;
public void saleDone()
{
checkData();
}
}
主程序
// See https://aka.ms/new-console-template for more information
using myjob;
using System;
namespace myworkApplcition
{
class myword
{
static void Main(string[] args)
{
checkproduce checkproduce = new checkproduce();
SaleData saleData= new SaleData();
//註冊檢查函數
saleData.checkData += new SaleData.checkNum(checkproduce.check);
saleData.saleDone();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static myjob.EventTest;
namespace myjob
{
//訂閱器
public class checkproduce {
//檢查庫存值
public void check()
{
Console.WriteLine("觸發庫存檢查函數");
}
}
//銷售數據校對
public class SaleData {
public delegate void checkNum();
public event checkNum checkData;
public void saleDone()
{
checkData();
}
}
}