有没有VB.NET版本的C#输出参数?

20 浏览
0 Comments

有没有VB.NET版本的C#输出参数?

VB.NET是否有像C#中out函数参数一样的直接等价物,其中传递给函数的变量不需要初始化?

admin 更改状态以发布 2023年5月21日
0
0 Comments

没有一个构造方式能够允许传递未初始化的变量到方法中而不会出现警告,但是,正如我在我的问题和回答中提到的那样,在ByRef参数定义中指定一个属性,即使VB会忽略它,但C#会将其视为一个out参数。

因此,我会将引用变量初始化为Nothing,并指定 ByRef来表示意图(如果C#用户需要访问您的方法,这将起作用)。

如果您认为您知道当您打算访问未分配引用变量中的默认Nothing时,您可以将“警告配置”“使用变量之前的赋值”设置为项目级别的“无”(项目属性>编译,您可能需要将配置设置为“所有配置”才能更改此设置),或者,在VS2015(VB.NET 14)中,您可以使用#Disable Warning BC42030

0
0 Comments

不,VB中没有out关键字的等价物。

然而,在方法中,VB会自动初始化所有本地变量,因此可以在不需要显式初始化变量的情况下使用ByRef

例如:

Sub Main()
  Dim y As Integer
  Test(y)
End Sub
Sub Test(ByRef x As Integer)
  x = 42
End Sub

(如果您检查框架中的代码(例如Double.TryParse),您可能会看到添加到参数中,但只有在调用被COM互操作或平台调用封送时才会有区别。)

0