Parametry opcjonalne (Visual Basic)

Możesz określić, że parametr procedury jest opcjonalny i nie trzeba do niego przekazywać żadnego argumentu w momencie wywołania procedury.Parametry opcjonalne są oznaczone przez słowo kluczowe Optional w definicji procedury.Mają zastosowanie następujące zasady:

  • Każdy parametr opcjonalny w definicji procedury musi określać wartość domyślną.

  • Wartość domyślna dla opcjonalnego parametru musi być wyrażeniem stałym.

  • Każdy parametr występujący w definicji procedury po opcjonalnym parametrze również musi być opcjonalny.

Deklaracja procedury z opcjonalnym parametrem ma następującą składnię:

Sub sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)

Wywoływanie procedur z opcjonalnymi parametrami

Gdy wywołujesz procedurę z opcjonalnym parametrem, możesz wybrać, czy podać argument.Jeśli tego nie zrobisz, procedura użyje wartości domyślnej zadeklarowanej dla tego parametru.

Jeżeli pomijasz jeden lub więcej argumentów opcjonalnych na liście argumentów, użyj kolejnych średników do oznaczania ich położenia.Następujący przykład wywołania dostarcza pierwszy i czwarty argument, a pomija drugi i trzeci:

sub name(argument 1, , , argument 4)

Poniższy przykład wykonuje kilka wywołań do funkcji MsgBox.MsgBox ma jeden parametr wymagany i dwa parametry opcjonalne.

Pierwsze wywołanie MsgBox dostarcza wszystkie trzy argumenty w kolejności określonej przez MsgBox.Drugie wywołanie dostarcza tylko wymagany argument.Wywołania trzecie i czwarte dostarczają argumenty pierwszy i trzeci.Trzecie wywołanie robi to według pozycji, a czwarte wywołanie — według nazwy.

MsgBox("Important message", MsgBoxStyle.Critical, "MsgBox Example")
MsgBox("Just display this message.")
MsgBox("Test message", , "Title bar text")
MsgBox(Title:="Title bar text", Prompt:="Test message")

Określenie, czy opcjonalny argument jest obecny

Procedura nie może wykryć w czasie wykonywania, czy podany argument został pominięty lub kod wywołujący ma jawnie przekazywaną wartość domyślną.Jeśli potrzebujesz takiego rozróżnienia, możesz ustawić mało prawdopodobną wartość jako domyślną.Poniższa procedura określa opcjonalny parametr office i testuje jego wartość domyślną QJZ, aby zobaczyć, czy została pominięta w wywołaniu:

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

Jeśli parametr opcjonalny jest typem odwołania, takim jak String, możesz użyć Nothing jako wartości domyślnej, pod warunkiem że nie jest to oczekiwana wartość dla argumentu.

Parametry opcjonalne i przeciążenie

Innym sposobem zdefiniowania procedury z opcjonalnymi parametrami jest używanie przeciążenia.Jeśli masz jeden parametr opcjonalny, możesz zdefiniować dwie przeciążone wersje procedury, jedną przyjmującą parametr i jedną bez niego.Takie podejście staje się bardziej skomplikowane w miarę wzrostu liczby parametrów opcjonalnych.Jej zaletą jest jednak, że możesz mieć absolutną pewność, czy program wywołujący dostarcza każdy opcjonalny argument.

Zobacz też

Informacje

Optional (Visual Basic)

ParamArray (Visual Basic)

Koncepcje

Procedury w Visual Basic

Parametry i argumenty procedur (Visual Basic)

Przekazywanie argumentów według wartości i według odwołania (Visual Basic)

Przekazywanie argumentów według pozycji i według nazwy (Visual Basic)

Parameter — Tablice (Visual Basic)

Przeciążanie procedury (Visual Basic)