微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vb.net – 默认情况下如何将参数传递给VB函数

假设我有以下功能

Function myFunction(j As Integer) As Double
    myFunction = 3.87 * j
    Exit Function
End Function

j是作为值ByVal还是通过引用ByRef传递的?

或者它取决于数据类型?如果我将一个复杂的对象作为值传递怎么办?

提前致谢!

解决方法

除非明确指定,否则传递ByVal的参数.有关详细信息,请参阅 Passing Arguments by Value and by Reference,其中说明:

The default in Visual Basic is to pass arguments by value. You can make your code easier to read by using the ByVal keyword. It is good programming practice to include either the ByVal or ByRef keyword with every declared parameter.

至于:

What if I have a complex object passed as the value?

这很好,只要“复杂对象”是一个类(引用类型),你就不会进行大量的复制.这是因为对对象实例的引用是通过值(ByVal)传递的,这意味着您只复制单个引用,即使该类非常大.

但是,如果复杂对象是结构(值类型),则在调用方法时将导致复制对象.这是顺便说一下,为什么像XNA这样的一些框架提供了许多方法的替代版本(如Matrix.Multiply),它们可以选择传递ByRef – 这可以避免昂贵的Matrix结构副本.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐