public void Bar()
{
Foo foo = new Foo();
**foo.MyEvent += foo_MyEvent;**
foo.FireEvent();
}
void foo_MyEvent(object sender, EventArgs e)
{
((Foo)sender).MyEvent -= foo_MyEvent;
}
Run Code Online (Sandbox Code Playgroud)
嘿,我对事件有点不熟悉,有人能告诉我+ =运算符对事件的影响吗?
Mar*_*ers 20
你接受的答案是一个很好的简化版本+=,但它不是完整的故事.
该+=运营商呼吁事件add方法.同样的-=电话删除.这通常会导致委托被添加到事件触发时调用的内部处理程序列表中,但并非总是如此.
完全可以定义add来做其他事情.此示例可能有助于演示您致电时会发生什么+=:
class Test
{
public event EventHandler MyEvent
{
add
{
Console.WriteLine("add operation");
}
remove
{
Console.WriteLine("remove operation");
}
}
static void Main()
{
Test t = new Test();
t.MyEvent += new EventHandler (t.DoNothing);
t.MyEvent -= null;
}
void DoNothing (object sender, EventArgs e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
add operation remove operation
有关更多信息,请参阅Jon Skeet关于事件和代理人的文章.
| 归档时间: |
|
| 查看次数: |
12102 次 |
| 最近记录: |