.Net 之事件

iDotNetSpace發表於2009-04-23
using System;

namespace TestEvent
{
    
class Program
    {
        
static void Main(string[] args)
        {

            Caculator caculator 
= new Caculator();

            CaculateManager caculateManager 
= new CaculateManager();

            
//事件繫結
            caculator.MyCaculator += caculateManager.Add;

            caculator.Caculate(
100200);

            caculator.MyCaculator 
+= caculateManager.sub;

            caculator.Caculate(
100200);

            
//事件登出
            caculator.MyCaculator -= caculateManager.Add;

            Console.Read();
        }
    }

    
public class CaculateEventArgs : EventArgs
    {
        
/// 
        
/// 二元操作的第一個數
        
/// 
        public readonly Int32 x;
        
/// 
        
/// 二元操作的第二個數
        
/// 
        public readonly Int32 y;

        
public CaculateEventArgs(Int32 x, Int32 y)
        {
            
this.x = x;
            
this.y = y;
        }

    }

    
public class Caculator
    {
        
//宣告事件委託
        public delegate void CaculateEventHandler(object sender, CaculateEventArgs e);

        
//宣告事件成員,提供外部繫結
        public event CaculateEventHandler MyCaculator;

        
//提供受保護的虛方法,可以由子類來拒絕監視
        protected virtual void OnCaculate(CaculateEventArgs e)
        {
            
if (MyCaculator != null)
            {
                
//觸發事件
                MyCaculator(this, e);
            }
        }
        
//執行計算
        public void Caculate(Int32 x, Int32 y)
        {
            CaculateEventArgs e 
= new CaculateEventArgs(x, y);

            OnCaculate(e);
        }
    }

    
public class CaculateManager
    {
        
//響應事件的方法
        public void Add(object sender, CaculateEventArgs e)
        {
            Console.WriteLine(e.x
+ e.y);
        }

        
//響應事件的方法
        public void sub(object sender, CaculateEventArgs e)
        {
            Console.WriteLine(e.x
-e.y);
        }
    }


}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-591572/,如需轉載,請註明出處,否則將追究法律責任。

相關文章