• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Kevin Wu's Corner
暂时停一停
博客园    首页       联系   管理    订阅  订阅

C#的委托与事件初探

委托、事件是C#编程中的重要元素,理解委托与事件,在windows面向对象编程中很有必要。今天看了一本书,名字叫《C#编程深度探索》,里面的委托与事件方面讲得虽然少,但是讲的还不错,挺有助于初学者理解它们。看完之后我自己写了个例子,加深自己的记忆。

委托类似于c++中的函数指针,不同的是只需含有与该委托相同签名(返回值,参数等等)的方法,委托

都可以调用,而c++中一个指针一次只能调用个一方法,如需更改调用要改变指针的所指地址;

1.声明一个委托
我在类A中声明一个委托 ChangeHandler();
public delegate void ChangeHandler();


2.声明事件
用ChangeHandler这个委托声明一个使用ChangHandler签名的事件
public event ChangeHandler changed;


3.绑定
我在B中声明了一个A的对象a,并对对其进行绑定事件响应代码,Change是B类里的一个函数
a.changed += new A.ChangeHandler(this.Change);

private void Change()
{
    Console.WriteLine(
"Some thing have been changed!");
}


4.使用
在A中声明一个方法
public void activation()
{
    
if(changed!=null)
            changed();
}

声明假如changed事件已经绑定至少一个响应,则执行该事件

详细代码如下:
using System;

class class1
{
    
static void Main()
    {
        B b
=new B();
        b.DoChange();
    }


public class A
{
    
public delegate void ChangeHandler();
    
public event ChangeHandler changed;

    
public A()
    {
    }

    
public void activation()
    {
        
if(changed!=null)
            changed();
    }
}


public class B
{
    
private A a;
    
    
public B()
    {
        a 
= new A();
        a.changed 
+= new A.ChangeHandler(this.Change);
    }
    
    
private void Change()
    {
        Console.WriteLine(
"Some thing have been changed!");
    }

    
public void DoChange()
    {
        a.activation();
    }
}
}


by Kevin wu  
posted @ 2006-12-20 22:41  Kevin Wu  阅读(627)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3