在连接事件处理程序时是否有必要检查订阅的事件?

时间:2016-11-03 11:39:31

标签: c# webforms vb.net-to-c#

我将一些自定义服务器控件从VB转换为C#。在一个控件中,此事件存在:

Private Sub MyControl_Init(sender As Object, e As System.EventArgs) Handles Me.Init
    ' ...
End Sub

根据我今天其他地方的研究,我知道在C#中可以通过以下方式实现:

public MyControl()
{
    Init += MyControl_Init;
}
private void MyControl_Init(object sender, System.EventArgs e)
{
    // ...
}

在检查不同的自动转换工具时,特别是(InstantC#)做的事情完全不同:

public MyControl()
{
    SubscribeToEvents();
}

private bool EventsSubscribed = false;
private void SubscribeToEvents()
{
    if (EventsSubscribed)
        return;
    else
        EventsSubscribed = true;

    this.Init += MyControl_Init;
}

我知道此代码会检查事件是否已订阅。我的问题是,对于以前的版本,EventSubscribed是否有任何优势?当在页面中实例化服务器控件时,构造函数肯定只使用一次?或者,我是否遗漏了一些显而易见的在线转换工具?

提前致谢。

0 个答案:

没有答案