委托不同于以前函数指针的地方在于,可以绑定多个委托函数。
public delegate void HelloHandler( string Msg );
private void WriteHello1( string sMsg )
{
Debug.WriteLine( "WriteHello1:" + sMsg );
}
private void WriteHello2( string sMsg )
{
Debug.WriteLine( "WriteHello2:" + sMsg );
}
// delegate sample
HelloHandler hHello = new HelloHandler( WriteHello1 );
hHello += new HelloHandler( WriteHello2 );
hHello( "Hello World!" );
对于委托绑定多个函数,要注意的是不要把异常扩散出来,其次委托类型的返回值为“void”。
那么在使用委托的时候,首先要明白几个问题,等各个问题清楚了,委托原型也就自然出来了。
问题一,传递信息是什么,传递的时机是否固定,一次传递还是多次传递;
问题二,用委托是否合适;
问题三,哪一方是委托的调用端,而哪一方是委托的初始端;
问题四,委托的初始化放在哪里比较合适。
问题一是关键,这首先决定是否要使用委托来实现,其次如果要使用委托,那么需要确定委托函数类型。