Hei*_*nzi 11
_您的示例中使用的下划线 ( ) 是 C# 的丢弃标记。不幸的是,(目前)在 VB 中没有类似的东西。VB语言设计github页面上有关于添加类似功能的讨论。
但是,在您的示例中,您可以省略分配结果(在 C# 和 VB 中),即
Bla(); // C#
Run Code Online (Sandbox Code Playgroud)
Bla() ' VB
Run Code Online (Sandbox Code Playgroud)
“丢弃变量”对out参数特别有用。在 VB 中,您可以只传递任意值而不是变量来丢弃未使用的ByRef参数。让我给你举个例子:
以下两行在 C# 中无效:
var b = Int32.TryParse("3", 0); // won't compile
var b = Int32.TryParse("3", out 0); // won't compile
Run Code Online (Sandbox Code Playgroud)
从 C# 7 开始,您可以_为此目的使用:
var b = Int32.TryParse("3", out _); // compiles and discards the out parameter
Run Code Online (Sandbox Code Playgroud)
然而,这在 VB 中是完全有效的,即使是Option Strict On:
Dim b = Int32.TryParse("3", 0)
Run Code Online (Sandbox Code Playgroud)
所以,是的,让“我想忽略 ByRef 值”更明确这一事实会很好,但在 VB.NET 中有一个简单的解决方法。显然,一旦 VB.NET 获得模式匹配或解构器,这种解决方法就不够了。