ITPub博客

首页 > Linux操作系统 > Linux操作系统 > .Net 之事件

.Net 之事件

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-04-23 16:16:54 0 删除 编辑
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/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5346997