参数数组 (Visual Basic)

通常,调用的过程所包含的参数不能超出过程声明指定的数目。 当需要数量不确定的变量时,可声明一个参数数组,它允许过程接受一组值作为参数。 定义过程时,并不需要知道参数数组中的元素数。 每次过程调用都单独确定数组的大小。

声明 ParamArray

使用 ParamArray (Visual Basic) 关键字表示参数列表中的参数数组。 适用以下规则:

  • 一个过程只能定义一个参数数组,而且此参数数组必须是过程定义中的最后一个参数。

  • 参数数组必须通过值传递。 在过程定义中显式使用 ByVal (Visual Basic) 关键字是良好的编程习惯。

  • 参数数组是自动可选的。 其默认值是参数数组元素类型的空一维数组。

  • 参数数组前面的所有参数都是必需的。 参数数组必须是唯一的可选参数。

有关更多信息,请参见 如何:定义参数数量不确定的过程 (Visual Basic)

调用 ParamArray

调用定义参数数组的过程时,可以通过以下一种方式提供变量:

  • 不提供任何参数,即您可省略 ParamArray (Visual Basic) 参数。 这种情况下给过程传递的是空数组。 您还可以传递 Nothing (Visual Basic) 关键字,效果相同。

  • 包含任意数量的参数的列表,各参数之间用逗号分隔。 每个参数的数据类型都必须可以隐式转换成 ParamArray 元素类型。

  • 元素类型与参数数组的元素类型相同的数组。

在任何情况下,过程中的代码都将参数数组视为一个一维数组,此数组的元素的数据类型与 ParamArray 数据类型相同。

有关更多信息,请参见 如何:调用参数数量不确定的过程 (Visual Basic)

安全说明安全说明

每当处理可能变得无限大的数组时,将存在耗尽应用程序的某种内部容量的风险。 如果接受一个参数数组,则应该测试调用代码传递给此数组的数组大小。 如果此数组对应用程序来说太大,请执行适当的操作。 有关更多信息,请参见 数组 (Visual Basic)

示例

说明

下面的示例定义并调用函数 calcSum。 形参 args 的 ParamArray 修饰符使函数能够接受可变数量的实参。

代码

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables 
        ' are assigned the following values: args(0) = 4, args(1) = 3, 
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum 
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function calcSum(ByVal ParamArray args() As Double) As Double
        calcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            calcSum += args(i)
        Next i
    End Function

End Module

请参见

参考

Optional (Visual Basic)

UBound

概念

Visual Basic 中的过程

过程参数和变量 (Visual Basic)

通过值和通过引用传递参数 (Visual Basic)

按位置和名称传递参数 (Visual Basic)

可选参数 (Visual Basic)

过程重载 (Visual Basic)

Visual Basic 中的类型检查

数组 (Visual Basic)