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

Consulte también