在 C# 中
(new Action(() => MessageBox.Show("Hello"))).BeginInvoke(null, null);
在 VB 中,翻译后的代码无法编译
(New Action(Sub() MessageBox.Show("Hello"))).BeginInvoke(nothing, nothing)
但是在 VB 中,我可以将 BeginInvoke 的结果设置为隐式变量
a
并且它会运行(感谢@Ric 在另一篇文章中提出的这个建议)Dim a = (New Action(Sub() MessageBox.Show("Hello"))).BeginInvoke(Nothing, Nothing)
但是现在我想知道为什么在这种情况下 VB 需要在左侧设置某些内容,而 C# 则不需要。
最佳答案
VB.NET 只需要一个标识符。您不能像那样直接调用子成员或其他成员。但是,您可以改用 Call
。
Call (New Action(Sub() MessageBox.Show("Hello"))).BeginInvoke(nothing, nothing)
关于c# - 为什么匿名操作可以在 C# 中的一行中调用,而不是 VB?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14348817/