C# 到 VB.Net 语法转换

问题描述 投票:0回答:4

任何人都可以将以下语法翻译为 vb.net。

m_TextBox.Loaded += TextBoxLoaded
m_TextBox.Loaded -= TextBoxLoaded;
private void TextBoxLoaded(object sender, RoutedEventArgs e)
 {
   Init();
 }

..
containsTextProp.AddValueChanged(m_TextBox, (sender, args) => UpdateAdorner());
...
private void UpdateAdorner()
        {...}
vb.net
4个回答
6
投票

这是:

AddHandler m_TextBox.Loaded, AddressOf TextBoxLoaded
RemoveHandler m_TextBox.Loaded, AddressOf TextBoxLoaded

Private Sub TextBoxLoaded(ByVal sender as Object, ByVal e as RoutedEventArgs)
    Init()
End Sub

您对

AddValueChanged
的调用无法直接翻译,因为 VB.NET 的 lambda 表达式支持不如 C# 的强大。特别是,VB.NET lambda 必须是表达式,因此您必须返回一个值或调用
Function
。在您的例子中,您将调用
Sub
,这在 VB.NET 中是不允许的。您应该考虑将
UpdateAdorner
的签名更改为标准事件处理程序(如
TextBoxLoaded
方法)并将
AddressOf UpdateAdoerner
传递给
AddValueChanged

像这样:

containsTextProp.AddValueChanged(m_TextBox, AddressOf UpdateAdorner);

...

Private Sub UpdateAdorner(ByVal sender as Object, ByVal e as EventArgs)
    ... 
End Sub

3
投票

有很多在线转换器,下次你应该先尝试一下,如果它不起作用或者你有问题,请在这里发帖。

AddHandler m_TextBox.Loaded, AddressOf TextBoxLoaded     ' per @Adam Robinson'
RemoveHandler m_TextBox.Loaded, AddressOf TextBoxLoaded  ' per @Adam Robinson'

Private Sub TextBoxLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
  Init()
End Sub

Private Sub UpdateAdorner()

End Sub

1
投票

您可能会发现“C# 和 VB.NET 比较备忘单”很有用。 http://aspalliance.com/625


1
投票

您可以将其放入应用程序中,构建它,然后在 .NET Reflector 中打开该应用程序。 .NET Reflector 可以获取 IL 并将其“转换为”C#/VB.NET 等

© www.soinside.com 2019 - 2024. All rights reserved.