首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否存在与C# out参数等效的VB.NET?

是否存在与C# out参数等效的VB.NET?
EN

Stack Overflow用户
提问于 2010-12-05 20:21:37
回答 5查看 78.7K关注 0票数 102

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-12-05 20:28:40

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

但是,VB确实会自动初始化方法中的所有局部变量,因此您可以使用ByRef,而无需首先显式初始化变量。

示例:

代码语言:javascript
复制
Sub Main()
  Dim y As Integer
  Test(y)
End Sub

Sub Test(ByRef x As Integer)
  x = 42
End Sub

(如果检查框架中的代码(例如Double.TryParse),您可能会看到<OutAttribute>添加到参数中,但这仅在为COM互操作或平台调用封送调用时才会有所不同。)

票数 105
EN

Stack Overflow用户

发布于 2017-03-25 20:25:24

我在VB.NET中遇到了这样的问题:我调用了一个"by ref“函数,该函数回传了一个数组。

尽管编译器将其标记为警告,但它没有问题。修复方法非常简单,而且可能是很好的编程实践。

我变了

代码语言:javascript
复制
Dim m_arr_values() as Integer

fnRetArray(m_arr_values)

代码语言:javascript
复制
' Even though 'Nothing' is the default value, setting it
' stops the compiler complaining.
Dim m_arr_values() as Integer = Nothing

fnRetArray(m_arr_values)

如果变量名是描述性的,它在编码时也会有所帮助。

代码语言:javascript
复制
Sub fnCreatePalette(ByRef arr_in_pal() As color, ByRef arr_out_pal() as uinteger)
    ...
End Sub
票数 2
EN

Stack Overflow用户

发布于 2012-09-04 18:09:18

您可以在VB.NET中使用按引用传递方法。

您需要在C#中使用Out参数机制,因为它不允许您在未初始化变量的情况下使用任何变量。

VB.NET不需要特殊的关键字,因为它自己会自动完成这个任务。

只需使用ByRef即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4358742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档