VB.NET中函数参数默认传递方式是怎样的?

2026-04-29 07:102阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计426个文字,预计阅读时间需要2分钟。

VB.NET中函数参数默认传递方式是怎样的?

假设您希望对以下伪原创代码进行简化,并且不超过100个字:

plaintext假设我有以下功能:Function myFunction(j As Integer) As DoublemyFunction=3.87 * jExit FunctionEnd Functionj 作为值 ByVal 传递还是通过引用 ByRef 传递?或者它取决于数据类型?如果我将一个复杂的对象作为j传递...

简化后的内容可以是:

VB.NET中函数参数默认传递方式是怎样的?

plaintextj 可通过 ByVal 或 ByRef 传递,取决于对象复杂度。

假设我有以下功能:

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结构副本.

本文共计426个文字,预计阅读时间需要2分钟。

VB.NET中函数参数默认传递方式是怎样的?

假设您希望对以下伪原创代码进行简化,并且不超过100个字:

plaintext假设我有以下功能:Function myFunction(j As Integer) As DoublemyFunction=3.87 * jExit FunctionEnd Functionj 作为值 ByVal 传递还是通过引用 ByRef 传递?或者它取决于数据类型?如果我将一个复杂的对象作为j传递...

简化后的内容可以是:

VB.NET中函数参数默认传递方式是怎样的?

plaintextj 可通过 ByVal 或 ByRef 传递,取决于对象复杂度。

假设我有以下功能:

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结构副本.