Afield-like-event
是一种同时声明委托变量和事件的方式。
因此,像 event( public event EventHandler MyEvent;
) 这样的字段可能会转换为:(取自这里)
private EventHandler _myEvent;
public event EventHandler MyEvent
{
add
{
lock (this)
{
_myEvent += value;
}
}
remove
{
lock (this)
{
_myEvent -= value;
}
}
}
注意私人备份字段。
然而,乔恩(评论部分)纠正了我,一般事件没有备用字段。就像是 :
public event EventHandler MyEvent
{
add
{
Console.WriteLine ("add operation");
}
remove
{
Console.WriteLine ("remove operation");
}
}
注意 - 没有备份字段。
但后来他说 winform 的行为是这样的:
例如,在有很多事件但只有少数可能被订阅的情况下,您可以有一个从描述事件的某个键到当前处理它的委托的映射。这就是 Windows 窗体所做的 - 这意味着您可以拥有大量事件,而不会因为通常只有空值的变量而浪费大量内存。
问题 :
- winform 如何在没有任何备份字段(委托类型)的情况下使用此地图事物来公开事件