我已经使用几乎所有的转换工具将VB.NET的片段转换为C#。除了转换的一些差异之外,我遇到麻烦的一件事是事件处理程序转换。纵观一些纯C#代码,我看到这样的事情:对事件处理程序的VB/C#转换感到困惑
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
...
}
这看着MSDN,引发PreRender事件。好。现在,采取一些VB.NET代码:
Private Sub Page_PreRender(ByVal sender As Object,
ByVal e As System.EventArgs) Handles Me.PreRender
....
EndSub
涉及相同PreRender事件,并用转换工具转换它(DeveloperFusion seemed to give the cleanest conversion of the Event Handler)了这样的结果:
public class MyClass : UserControl
{
private void Page_PreRender(object sender, System.EventArgs e)
{
...
}
public MyClass()
{
PreRender += Page_PreRender;
}
}
作为新来这个,我的主要问题是否上面首先列出的原始(或纯粹的)C#代码基本上与转换后的C#代码(除了可能与object sender
部分相同)?如果不是简单的解释将不胜感激。 10基本上,我只是想知道PreRender += Page_PreRender;
部分是多余的。
你的第一个C#代码块没有引发事件,它只是事件处理程序,事件处理程序仍然会被连接到某个地方。最后一个块中的+ =将事件连接到处理程序,该处理程序是VB.NET句柄关键字 –
@chriswarner的呃嗯,你是对的。对不起,我的困惑在于一个类文件和一个代码隐藏。但是,转换后的代码是否适合类文件?也就是说,转换文件中的接线是“最佳实践”? – REMESQ
@chris:不,第一个C#代码块没有事件处理程序,它根本没有使用事件或代理。 –