Volitelné parametry (Visual Basic)
Můžete určit, že parametr procedury je volitelný, a při volání této procedury se nemusí zadávat žádný argument.Volitelné parametry jsou v definici procedury označeny klíčovým slovem Optional.Platí následující pravidla:
Každý volitelný parametr v definici procedury musí mít výchozí hodnotu.
Výchozí hodnota volitelného parametru musí být konstantní výraz.
Každý parametr, který v definici procedury následuje za volitelným parametrem, musí být také volitelný.
Následující syntaxe znázorňuje deklaraci procedury s volitelným parametrem:
Sub sub name(ByVal parameter1 As datatype1, Optional ByVal parameter2 As datatype2 = defaultvalue)
Volání procedur s volitelnými parametry
Při volání procedury s volitelným parametrem se můžete rozhodnout, zda zadáte argument.Pokud ho nezadáte, použije procedura výchozí hodnotu deklarovanou pro tento parametr.
Pokud v seznamu argumentů vynecháte jeden nebo více volitelných argumentů, označíte jejich pozice pomocí po sobě jdoucích čárek.V následujícím ukázkovém volání je zadán první a čtvrtý argument, ale nikoli druhý a třetí:
sub name(argument 1, , , argument 4)
Následující příklad provede několik volání funkce MsgBox.Funkce MsgBox má jeden povinný parametr a dva volitelné parametry.
V prvním volání funkce MsgBox jsou zadány všechny tři argumenty v pořadí, v jakém je funkce MsgBox definuje.Ve druhém volání je zadán pouze povinný argument.Ve třetím a čtvrtém volání je zadán první a třetí argument.Třetí volání tak činí podle pozice a čtvrté volání podle názvu.
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")
Určení, zda existuje volitelný argument
Procedura nedokáže za běhu zjistit, zda byl daný argument vynechán nebo zda volající kód explicitně poskytuje výchozí hodnotu.Pokud to potřebujete rozlišit, můžete jako výchozí nastavit nějakou nepravděpodobnou hodnotu.Následující procedura definuje volitelný parametr office a testováním jeho výchozí hodnoty QJZ zjišťuje, zda byl ve volání vynechán:
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
Pokud je volitelný parametr odkazového typu, například String, můžete jako výchozí hodnotu použít Nothing, pokud to není očekávaná hodnota tohoto argumentu.
Volitelné parametry a přetěžování
Proceduru s volitelnými parametry lze definovat také pomocí přetěžování.Pokud máte jeden volitelný parametr, můžete definovat dvě přetížené verze procedury – jednu s parametrem a druhou bez parametru.S rostoucím počtem volitelných parametrů se zvyšuje složitost.Výhodou ale je, že máte absolutní jistotu, zda volající program poskytl jednotlivé volitelné argumenty.
Viz také
Referenční dokumentace
Koncepty
Procedury v jazyce Visual Basic
Parametry a argumenty procedury (Visual Basic)
Předávání argumentů podle hodnoty a odkazu (Visual Basic)