VB.Net替代C#下划线(丢弃)

时间:2019-08-02 19:11:12

标签: vb.net

在C#中我可以做到:

_ = Bla();

我可以在VB.Net中这样做吗?

我认为答案是否定的,但我只是想确定一下。

1 个答案:

答案 0 :(得分:3)

在您的示例中使用的下划线(_)是C#的discard token。不幸的是,(当前)VB中没有类似的东西。 VB语言设计github页面上有一个discussion about adding a similar feature

但是,在您的示例中,您可以省略分配结果(在C#和VB中都是如此),即

Bla(); // C#

Bla()  ' VB

“丢弃变量”对于out参数特别有用。在VB中,您可以传递一个任意的 value 而不是一个变量来丢弃未使用的ByRef参数。让我举个例子:

以下两行在C#中无效:

var b = Int32.TryParse("3", 0); // won't compile
var b = Int32.TryParse("3", out 0); // won't compile

从C#7开始,您可以为此使用_

var b = Int32.TryParse("3", out _); // compiles and discards the out parameter

但是,即使在Option Strict On中,这在VB中也完全有效:

Dim b = Int32.TryParse("3", 0)

因此,是的,使“我想忽略ByRef值”这一事实更加明确是很好的,但是VB.NET中有一个简单的解决方法。显然,一旦VB.NET获得pattern matchingdeconstructors,这种解决方法将是不够的。