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
Koncepcje
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)