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

Nepovinné (Visual Basic)

ParamArray (Visual Basic)

Koncepty

Procedury v jazyce Visual Basic

Parametry a argumenty procedury (Visual Basic)

Předávání argumentů podle hodnoty a odkazu (Visual Basic)

Předávání argumentů podle pozice a názvu (Visual Basic)

Pole parametrů (Visual Basic)

Procedura přetížení (Visual Basic)