委托与事件
委托是一个类,这点非常重要,对理解"事件是委托的一个实例"非常重要.
一般情况下,事件的响应方法中都有两个参数,其中一个代表引发事件的对象即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);
}
}
}