Optional (Visual Basic)
指定在调用过程时可以省略过程参数。
备注
对于每个可选参数,必须指定常数表达式作为该参数的默认值。 如果表达式的计算结果为 nothing,值数据类型的默认值用作该参数的默认值。
如果参数包含一个可选参数,其后的每个参数也都必须是可选的。
Optional 修饰符可用于下面的上下文中:
备注
在调用程序 (带或不带可选参数时,可以通过位置的名称参数或。有关更多信息,请参见 按位置和名称传递参数 (Visual Basic)。
备注
通过使用重载,还可以定义带可选参数的过程。如果有一个可选参数,可以定义接受此参数不的两个重载版本的程序,一个和一个。有关更多信息,请参见 过程重载 (Visual Basic)。
示例
下面的示例定义了一个可选参数的过程。
Public Function FindMatches(ByRef values As List(Of String),
ByVal searchString As String,
Optional ByVal matchCase As Boolean = False) As List(Of String)
Dim results As IEnumerable(Of String)
If matchCase Then
results = From v In values
Where v.Contains(searchString)
Else
results = From v In values
Where UCase(v).Contains(UCase(searchString))
End If
Return results.ToList()
End Function
下面的示例演示如何调用一个过程具有位置传递的参数并按名称传递参数。 该程序有两个可选参数。
Private Sub TestParameters()
' Call the procedure with its arguments passed by position,
studentInfo("Mary", 19, #9/21/1981#)
' Omit one optional argument by holding its place with a comma.
studentInfo("Mary", , #9/21/1981#)
' Call the procedure with its arguments passed by name.
studentInfo(age:=19, birth:=#9/21/1981#, name:="Mary")
' Supply an argument by position and an argument by name.
studentInfo("Mary", birth:=#9/21/1981#)
End Sub
Private Sub studentInfo(ByVal name As String,
Optional ByVal age As Short = 0,
Optional ByVal birth As Date = #1/1/2000#)
Console.WriteLine("name: " & name)
Console.WriteLine("age: " & age)
Console.WriteLine("birth date: " & birth)
Console.WriteLine()
End Sub