1. 程式人生 > >C#事件監控變數值的改變

C#事件監控變數值的改變

       如何使用C#的事件來監控變數的改變?這是一個非常常見的問題。並且如果能夠使用事件來解決的話對於程式設計會帶來很大的便利同時保持效能的優良。

 

    以下是完整的程式碼

public class Program
{
    //需要監控的欄位
    private int myValue;
 
    //屬性設定,此處呼叫了事件觸發函式
    public bool MyValue
    {
        get { return myValue; }
        set
        {
            //如果變數改變則呼叫事件觸發函式
            if (value!=myValue)
            {
                WhenMyValueChange();
            }
            myValue = value; 
        }
    }
 
    //定義的委託
    public delegate void MyValueChanged(object sender, EventArgs e);
    //與委託相關聯的事件
    public event MyValueChanged OnMyValueChanged;
 
    //建構函式初始化初值並繫結一個事件處理函式
    public Program()
    {
        myValue = 0;
        OnMyValueChanged += new MyValueChanged(afterMyValueChanged);
 
    }
 
    //事件處理函式,在這裡新增變數改變之後的操作
    private void afterMyValueChanged(object sender, EventArgs e)
    {
        //do something
    }
 
    //事件觸發函式
    private void WhenMyValueChange()
    {
        if (OnMyValueChanged != null)
        {
            OnMyValueChanged(this, null);
        }
    }
}