多播委托:举个例子,del是一个委托,Method1和Method2是obj对象的两个方法,则委托可这样写:
deld1=obj.Method1;
deld2=obj.Method2;
deld3=d1+d2;
d3();
当然Method1和Method2可不属于同一实例,但两个方法都必须不能有返回值。
异步回调和多播的一个例子:
classProgram
...{
publicdelegatevoiddel(stringmsg);
staticvoidMain(string[]args)
...{
DelClassmyDel=newDelClass();
delhandle=newdel(myDel.printMsg);
handle(\"helloworld\");
DelHandlemyHandle=newDelHandle();
handle=newdel(myHandle.hangleMsg);
handle(\"handlemsg\");
//异步回调
printAllMsg(\"call\",\"back\",handle);
//多播
deld1=myDel.method1;
deld2=myDel.method2;
deld3=myDel.printMsg;
delallMethod=d1+d2;
allMethod+=d3;
allMethod(\"allmethod\");
Console.ReadLine();
}
privatestaticvoidprintAllMsg(stringparam1,stringparam2,delmyCallBack) [Page]
...{
myCallBack(param1+param2);
}
}
publicclassDelClass
...{
publicvoidprintMsg(stringmsg)
...{
Console.WriteLine(msg);
}
publicvoidmethod1(stringmsg)
...{
Console.WriteLine(msg+\"method1\");
}
publicvoidmethod2(stringmsg)
...{
Console.WriteLine(msg+\"method2\");
}
}
publicclassDelHandle
...{
publicvoidhangleMsg(stringmsg)
...{
Console.WriteLine(msg);
}
}
最新评论