我一直在努力学习如何在C#中使用事件处理程序,但我无法弄清楚以下代码中的处理程序(this,e):
public event EventHandler ThresholdReached;
protected virtual void OnThresholdReached(EventArgs e)
{
EventHandler handler = ThresholdReached;
if (handler != null)
{
handler(this, e);
}
}
Run Code Online (Sandbox Code Playgroud)
它是否尝试使用事件(e)调用事件处理程序方法(this)?
它调用所有注册的事件侦听器 ThresholdReached事件。
该handler != null检查确保至少有一个侦听器注册到该事件。
在 C# 6.0 及更高版本中,您可以使用Null Propagation:
handler?.Invoke(this, e);
Run Code Online (Sandbox Code Playgroud)
handler(this, e)将调用每个注册的事件侦听器。事件侦听器在+=操作员的帮助下订阅,并在操作员的帮助下取消订阅-=该事件。
this是否可以让事件侦听器知道是谁引发了 ThresholdReached 事件。谁是事件的发送者。
e是事件参数,它也传递到侦听器方法中,该方法可以包含有关 ThresholdReached 事件的更多有用信息,例如达到了哪个阈值。
| 归档时间: |
|
| 查看次数: |
17291 次 |
| 最近记录: |