Sdílet prostřednictvím


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 označené klíčovým slovem Optional v definici procedury. 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 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í MsgBox funkce. MsgBox má jeden povinný parametr a dva volitelné parametry.

První volání, které MsgBox poskytuje všechny tři argumenty v pořadí, které MsgBox je 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í postup definuje volitelný parametr officea testuje jeho výchozí hodnotu, aby se zjistilo, QJZjestli nebyl 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 referenčním typem, jako Stringje například , můžete použít Nothing jako výchozí hodnotu, za předpokladu, že se nejedná o očekávanou hodnotu 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é