真是的,这个东西看了不用,一段时间后就忘了。
delegate相当于函数指针,可以把其他函数加入到delegate实体中,这样用调用delegate实体来实现对所加入函数的调用。
比如
public delegate deleTest(string name);
可以deleTest test = new deleTest(testFun);把testFun挂到test上。
其中testFun函数的签名要和deleTest的签名一致。
然后test(“dear”);就可以调用testFun()了。
事件则是特殊签名的delegate.
public delegate void EventHandler(object sender, System.EventArgs e);
而event呢,则是一个delegate的list,可以让很多delegate挂在上面,这样时间发生的时候,就可以调用所有挂在event上面的函数了。
一般会写一个event调用函数来保护event的触发。如
protected void OnTestEvent(System.EventArgs e)
{
if(testevent!=null) testevent(this,e);
}