gpt4 book ai didi

c# - 为什么匿名Action在C#中可以一行调用,而VB却不行?

转载 作者:行者123 更新时间:2023-11-30 14:13:24 25 4
gpt4 key购买 nike

在 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 只需要一个标识符。您不能像那样直接调用 sub 或其他成员。但是,您可以改用 Call

You typically use the Call keyword when the called expression doesn’t start with an identifier. Use of the Call keyword for other uses isn’t recommended.

http://msdn.microsoft.com/en-us/library/sxz296wz(v=vs.110).aspx

Call (New Action(Sub() MessageBox.Show("Hello"))).BeginInvoke(nothing, nothing)

关于c# - 为什么匿名Action在C#中可以一行调用,而VB却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14348817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com