|
|
1
19
+=和-=是名为add()和remove()的内置内部方法的语法快捷方式,它们添加或删除指向委托作为私有字段具有的内部委托链接列表的指针。运行remove时,它从链接列表的开头开始,一次检查列表中的每个委托,直到找到一个与传递给remove()方法的委托“相等”为止。(使用-=语法) 然后,它从链接列表中删除该列表,并修补链接列表以保持其连接… 在此上下文中,“equals”方法(对于delegate())将被重写,以便它只比较委托的目标和methodptr,这两个方法将相同,即使您已经创建了一个要传递以删除的新委托… |
|
|
2
7
“new myhandler”实际上是多余的。你可以简单地做
C中的所有事件都是多播委托,因此,+=和-=语法表示要向将要调用的委托列表添加/删除委托。 至于幕后发生的事情,我发现最好的解释是 Jon Skeet's . |