Поделиться через


Необязательные параметры (Visual Basic)

Некоторые параметры процедуры можно задать как необязательные, тем самым указывая, что их можно не задавать при вызове процедуры. Необязательные параметры обозначены ключевым словом Optional в определении процедуры. Действуют следующие правила.

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

  • Значение по умолчанию для необязательного параметра следует задавать в виде константного выражения.

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

Ниже приведен синтаксис объявления процедуры с необязательным параметром:

Sub sub name(ByVal parameter 1 As data type 1, Optional ByVal parameter 2 As data type 2 = default value)

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

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

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

Call sub name(argument 1, , , argument 4)

Определение наличия необязательного аргумента

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

Sub notify(ByVal company As String, Optional ByVal office As String = "QJZ")
    If office = "QJZ" Then
        Debug.WriteLine("office not supplied -- using Headquarters")
        office = "Headquarters"
    End If
    ' Insert code to notify headquarters or specified office.
End Sub

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

Необязательные параметры и перегрузка

Другой способ определения процедуры с необязательными параметрами состоит в использовании перегрузки. Если имеется один необязательный параметр, то можно определить две перегруженные версии процедуры, одна принимает параметр, а другая — нет. Такой подход становится более сложным с увеличением числа необязательных параметров. Однако, его преимущество заключается в том, что он позволяет точно знать, все ли необязательные аргументы заданы в вызывающей программе.

См. также

Задачи

Практическое руководство. Объявление необязательных параметров процедуры (Visual Basic)

Практическое руководство. Вызов процедуры, принимающей необязательные параметры (Visual Basic)

Практическое руководство. Определение наличия необязательных параметров (Visual Basic)

Ссылки

Optional (Visual Basic)

ParamArray (Visual Basic)

Основные понятия

Процедуры в Visual Basic

Параметры и аргументы процедуры (Visual Basic)

Передача аргументов по значению и по ссылке (Visual Basic)

Передача аргументов по позиции и по имени (Visual Basic)

Массивы параметров (Visual Basic)

Перегрузка процедур (Visual Basic)