大胖的部落格

Just a note

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
在一个事件发起者类中,声明delegate表明事件触发时要调用的处理函数的类型。
根据delegate声明一个event,类似函数指针,执行时触发事件,类似与通过函数指针调用函数。

在事件处理类中,定义一些事件处理函数,与上面delegate类型一致。
通过+=向事件发起者类的event添加处理函数;或者通过-=删除处理函数。

当发起者的事件被触发时,会调用处理类添加的处理函数。

using System;

class Test
{
    
//事件发起者
    class A
    {
        
//声明delegate,当事件触发时,调用的函数类型
        public delegate void MyDele();

        
//声明event,与delegate关联
        public event MyDele ad;

        
//执行该方法时,触发事件
        public void Run()
        {
            ad();
        }
    }

    
//实现了事件触发时需要调用的函数
    class B
    {
        
//向事件发起者添加事件处理函数
        public void AddProc(A a)
        {
            a.ad 
+= new A.MyDele(First);
            a.ad 
+= new A.MyDele(Second);
        }

        
//向事件发起者删除事件处理函数
        public void DelProc(A a)
        {
            a.ad 
-= new A.MyDele(First);
        }

        
//处理函数
        private void First()
        {
            Console.WriteLine(
"First");
        }
        
private void Second()
        {
            Console.WriteLine(
"Second");
        }
    }

    
static void Main()
    {
        A a 
= new A();
        B b 
= new B();

        b.AddProc(a);
        a.Run();

        b.DelProc(a);
        a.Run();


    }
}


posted on 2009-06-14 21:40 大胖 阅读(127) 评论(0)  编辑 收藏 引用 所属分类: C#

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理