Megosztás a következőn keresztül:


Választható paraméterek (Visual Basic)

Megadhatja, hogy az eljárásparaméter nem kötelező, és az eljárás meghívásakor nem kell argumentumot megadni. Az opcionális paramétereket az eljárásdefinícióban szereplő Optional kulcsszó jelöli. A következő szabályok érvényesek:

  • Az eljárásdefiníció minden választható paraméterének meg kell adnia egy alapértelmezett értéket.

  • Az opcionális paraméterek alapértelmezett értékének állandó kifejezésnek kell lennie.

  • Az eljárásdefinícióban egy választható paramétert követő paramétereknek is opcionálisnak kell lenniük.

Az alábbi szintaxis egy választható paraméterrel rendelkező eljárásdeklarációt mutat be:

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

Meghívási eljárások választható paraméterekkel

Ha egy választható paraméterrel rendelkező eljárást hív meg, eldöntheti, hogy megadja-e az argumentumot. Ha nem, az eljárás az adott paraméterhez deklarált alapértelmezett értéket használja.

Ha kihagy egy vagy több választható argumentumot az argumentumlistában, egymást követő vesszőkkel jelölheti meg a pozícióikat. Az alábbi példahívás az első és a negyedik argumentumot adja meg, a másodikat és a harmadikat nem:

Sub name(argument 1, , , argument 4)  

Az alábbi példa több hívást indít a MsgBox függvényre. MsgBox egy kötelező paraméter és két választható paraméter.

Az első MsgBox hívás mindhárom argumentumot abban a sorrendben adja meg, ahogyan azt a MsgBox meghatározza. A második hívás csak a szükséges argumentumot biztosítja. A harmadik és negyedik hívás adja meg az első és a harmadik argumentumot. A harmadik hívás ezt pozíció szerint, a negyedik hívás pedig név alapján végzi el.

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

Annak meghatározása, hogy szerepel-e választható argumentum

Az eljárás futásidőben nem tudja észlelni, hogy egy adott argumentum ki lett-e hagyva, vagy a hívó kód explicit módon adta meg az alapértelmezett értéket. Ha ezt a megkülönböztetést meg kell tennie, egy nem valószínű értéket állíthat be alapértelmezettként. Az alábbi eljárás határozza meg az opcionális paramétert office, és ellenőrzi az alapértelmezett értékét, hogy kiderüljön, QJZnem szerepel-e a hívásban:

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

Ha az opcionális paraméter egy referenciatípus, például egy String, akkor Nothing használhatja alapértelmezett értékként, feltéve, hogy ez nem az argumentum várt értéke.

Választható paraméterek és túlterhelés

Az opcionális paraméterekkel rendelkező eljárás meghatározásának másik módja a túlterhelés használata. Ha van egy választható paramétere, az eljárás két túlterhelt verzióját határozhatja meg, egyet elfogadva a paramétert, egyet pedig anélkül. Ez a megközelítés egyre bonyolultabbá válik az opcionális paraméterek számának növekedésével. Előnye azonban az, hogy teljesen biztos lehet abban, hogy a hívó program adott-e meg minden választható argumentumot.

Lásd még