Optional (Visual Basic)

Указывает, что аргумент процедуры может быть опущен при вызове процедуры.

Замечания

Для каждого необязательного параметра необходимо указать константное выражение в качестве значения по умолчанию этого параметра. Если выражение вычисляется как "Нет", значение по умолчанию типа данных значения используется в качестве значения по умолчанию параметра.

Если список параметров содержит необязательный параметр, каждый следующий параметр также должен быть необязательным.

Модификатор Optional можно использовать в следующих контекстах:

Примечание.

При вызове процедуры с необязательными параметрами можно передавать аргументы по позиции или по имени. Дополнительные сведения см. в разделе "Передача аргументов по позиции и по имени".

Примечание.

Можно также определить процедуру с необязательными параметрами с помощью перегрузки. Если у вас есть один необязательный параметр, можно определить две перегруженные версии процедуры, которая принимает параметр и тот, который не поддерживает. Дополнительные сведения см. в разделе Procedure Overloading.

Пример 1

В следующем примере определяется процедура с необязательным параметром.

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

Пример 2

В следующем примере показано, как вызвать процедуру с аргументами, передаваемыми по позиции, и с аргументами, переданными по имени. Процедура имеет два необязательных параметра.

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

См. также