作为一个习惯于VB.NET的开发者,我习惯于“仅仅触发事件”。当然,自定义事件会有不同,但是对于“普通”的事件- 在触发之前我不需要检查委托是否为Nothing
。
而在使用C#时,我发现自己不得不反复使用这个模式:
if (myHandler != null)
{
myHandler(this, new EventArgs());
}
我认为以下模式可能更加优雅:
- 用空lambda初始化myHandler:
myHandler = (sender,e) => { };
- 预期myHandler永远不会为空,因此引发事件将变为:
myHandler(this, new EventArgs());