Optional (Visual Basic)
Especifica que, al llamar a un procedimiento, se puede omitir su argumento.
Comentarios
Para cada parámetro opcional, debe especificar una expresión constante como el valor predeterminado de ese parámetro. Si la expresión se evalúa como Nothing, el valor predeterminado del tipo de datos de valor se usa como valor predeterminado del parámetro.
Si la lista de parámetros contiene un parámetro opcional, todos los parámetros siguientes también deben ser opcionales.
El modificador Optional
se puede utilizar en los contextos siguientes:
Nota
Al llamar a un procedimiento con o sin parámetros opcionales, puede pasar argumentos por posición o por nombre. Para más información, consulte Paso de argumentos por posición o por nombre.
Nota
También puede definir un procedimiento con parámetros opcionales mediante sobrecarga. Si tiene un parámetro opcional, puede definir dos versiones sobrecargadas del procedimiento, una que acepta el parámetro y otra que no lo hace. Para obtener más información, consulta Procedure Overloading.
Ejemplo 1
En el ejemplo siguiente, se define un procedimiento que tiene un parámetro opcional.
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
Ejemplo 2
En el ejemplo siguiente, se muestra cómo llamar a un procedimiento con argumentos pasados por posición y con argumentos pasados por nombre. El procedimiento tiene dos parámetros opcionales.
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