委托与事件

委托是一个类,这点非常重要,对理解"事件是委托的一个实例"非常重要.

一般情况下,事件的响应方法中都有两个参数,其中一个代表引发事件的对象即sender,由于引发事件的对象不可预知的,因此我们把其声明成为object类型,所有的对象都适用。第二个参数代表引发事件的具体信息,各种类型的事件中可能不同,这要根据类中事件成员的说明决定。

现在熟悉vc++的人可能感觉到public delegate void fHandler(int a);这句就象一个宏 

 using System;

namespace delegeteTest
{
 public delegate void fHandler(int a);//fHandler现在上升到了类的层次
 
 class delegeteClass
 {
  public  fHandler f0;//声明了委托fHandler的实例f0;

  public fHandler  f1;//也可以再声明一个fHandler类的实例f1;
  public void d(int a,int b )
  {
   int c=a+b;
   f0(c);
  }
 }
 class test
 {
  public void output(int mun)
  {
   System.Console .WriteLine ("{0}",mun);
  }
 
  [STAThread]
  static void Main(string[] args)
  {
   test t=new test ();
   delegeteClass dc=new delegeteClass ();
   dc.f0 =new  delegeteTest.fHandler (t.output);//此行做相应的修改
   dc.d(2,3);
  }
 }
}

posted on 2007-10-19 10:53  LongSky  阅读(103)  评论(0编辑  收藏  举报

导航