csp*_*ton 87 vb.net out-parameters c#-to-vb.net
VB.NET是否直接等效于C#out函数参数,其中传递给函数的变量不需要初始化?
Guf*_*ffa 93
不,outVB中没有等效的关键字.
但是,VB会自动初始化方法中的所有局部变量,因此您ByRef无需先显式初始化变量即可使用.
例:
Sub Main()
Dim y As Integer
Test(y)
End Sub
Sub Test(ByRef x As Integer)
x = 42
End Sub
Run Code Online (Sandbox Code Playgroud)
(如果检查框架中的代码(例如Double.TryParse),您可能会看到<OutAttribute>添加到参数,但这只会在为COM互操作或平台调用编组调用时产生影响.)
Mar*_*urd 30
没有,没有相当的结构,它允许非初始化变量传递到方法,无需警告,但是,正如我所提到的问题和回答指定<Out()>属性上的ByRef参数定义,虽然VB忽略它,是用C#处理作为out参数.
因此,我会预先初始化引用变量Nothing 并指定<Out()> ByRef表示意图(如果C#用户访问您的方法,这将起作用).
如果您想知道何时打算Nothing在其他未分配的引用变量中访问默认值,您可以在项目级别将"警告配置" "在赋值前使用变量"设置为"无"(项目属性>编译,您可能想要在更改此设置之前将配置设置为"所有配置",或者,在VS2015(VB.NET 14)中,您可以使用#Disable Warning BC42030.
C#版本
void TestFunc(int x, ref int y, out int z) {
x++;
y++;
z = 5;
}
Run Code Online (Sandbox Code Playgroud)
Vb.net版本
Sub TestFunc(ByVal x As Integer, ByRef y As Integer, ByRef z As Integer)
x += 1
y += 1
z = 5
End Sub
Run Code Online (Sandbox Code Playgroud)
更新
如评论中所述,不要忘记初始化将在插槽中使用的参数
| 归档时间: |
|
| 查看次数: |
66511 次 |
| 最近记录: |