参数数组 (Visual Basic)

通常,不能超出过程声明指定调用带有多个参数的过程。 如果需要参数时的不确定数字,可以声明 参数数组,它允许过程接受参数的值。 ,在定义过程时,不必知道参数数组中的元素数。 每个单独确定数组的大小调用该过程。

声明 ParamArray

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

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

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

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

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

调用 ParamArray

当您调用定义参数数组的过程时,可以在任何一种方式提供参数以下方式所示:

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

  • 任意数量的参数列表,以逗号分隔。 每个参数的数据类型必须可以隐式转换为 ParamArray 元素类型。

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

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

安全说明安全说明

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

示例

下面的示例定义并调用函数 calcSum。 参数的 argsParamArray 修饰符使该函数接受参数数目可变。

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

下面的示例定义带有参数数组的一个过程所有数组元素的值传递给参数数组。

Sub studentScores(ByVal name As String, ByVal ParamArray scores() As String)
    Debug.WriteLine("Scores for " & name & ":" & vbCrLf)
    ' Use UBound to determine largest subscript of the array. 
    For i As Integer = 0 To UBound(scores, 1)
        Debug.WriteLine("Score " & i & ": " & scores(i))
    Next i
End Sub
Call studentScores("Anne", "10", "26", "32", "15", "22", "24", "16")
Call studentScores("Mary", "High", "Low", "Average", "High")
Dim JohnScores() As String = {"35", "Absent", "21", "30"}
Call studentScores("John", JohnScores)

请参见

参考

Optional (Visual Basic)

UBound

概念

Visual Basic 中的过程

过程参数和变量 (Visual Basic)

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

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

可选参数 (Visual Basic)

过程重载 (Visual Basic)

其他资源

数组 (Visual Basic)