kni*_*ttl 6 .net c# null events delegates
可能重复:
在事件声明中添加匿名空委托是否有缺点?
使用事件处理程序(在C#中)时,以下模式非常常见:
public event Action handler;
…
// some method:
if(handler != null) handler();
Run Code Online (Sandbox Code Playgroud)
为此事件分配空委托是否有任何缺点?这将在if !=null
任何地方保存条件,事件被触发.当然,这只适用于我们无法保证事件总是被赋予适当的委托.
public event Action handler;
…
// in constructor:
handler += ()=>{};
…
// some method:
handler();
Run Code Online (Sandbox Code Playgroud)
当然,性能略有下降,但它使代码更清晰.在这种情况下,最佳做法是什么?任何技术缺点?
您可以将处理程序包装在一个函数中,而不是在构造函数中添加空委托,该函数首先检查处理程序是否为 null,然后调用它。这样做的缺点是,如果您有很多事件,那么您将有很多包装每个事件的函数。
private void HandlerWrapper()
{
Action localHandler = handler;
if (localHandler != null) handler();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
455 次 |
最近记录: |