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


Argumentumok átadása pozíció és név szerint (Visual Basic)

Amikor meghív egy vagy egy eljárást, az argumentumokat pozíció szerint – abban a sorrendben, amelyben azok megjelennek az eljárás definíciójában –, vagy a pozíciótól függetlenül, név szerint is átadhatja őket.SubFunction

Ha név alapján ad át egy argumentumot, meg kell adnia az argumentum deklarált nevét, majd egy kettőspontot és egy egyenlőségjelet (:=), majd az argumentum értékét. Az elnevezett argumentumokat tetszőleges sorrendben megadhatja.

A következő Sub eljárás például három argumentumot vesz igénybe:

Public Class StudentInfo
    Shared Sub Display(name As String,
                Optional age As Short = 0,
                Optional birth As Date = #1/1/2000#)

        Console.WriteLine($"Name = {name}; age = {age}; birth date = {birth:d}")
    End Sub
End Class

Ha ezt az eljárást hívja meg, az argumentumokat pozíció, név vagy mindkettő keverékével adhatja meg.

Argumentumok átadása pozíció szerint

A metódust a Display pozíció szerint átadott és vesszővel tagolt argumentumokkal hívhatja meg, ahogyan az alábbi példában látható:

StudentInfo.Display("Mary", 19, #9/21/1998#)

Ha kihagy egy választható argumentumot egy pozícióargumentumlistában, vesszővel kell tartania a helyét. Az alábbi példa argumentum nélkül hívja meg a Display metódust age :

StudentInfo.Display("Mary",, #9/21/1998#)

Argumentumok átadása név szerint

Másik lehetőségként meghívhatja Display a név szerint átadott argumentumokat is vesszővel elválasztva, ahogyan az alábbi példában látható:

StudentInfo.Display(age:=19, birth:=#9/21/1998#, name:="Mary")

Az argumentumok név szerinti átadása különösen akkor hasznos, ha egynél több választható argumentumot tartalmazó eljárást hív meg. Ha név szerint ad meg argumentumokat, nem kell egymást követő vesszővel jelölnie a hiányzó pozícióargumentumokat. Az argumentumok név szerinti átadásával könnyebben nyomon követheti, hogy mely argumentumokat adja át, és melyeket hagyja ki.

Argumentumok keverése pozíció és név szerint

Egyetlen eljáráshívásban pozíció és név alapján is megadhat argumentumokat, ahogy az alábbi példában is látható:

StudentInfo.Display("Mary", birth:=#9/21/1998#)

Az előző példában nincs szükség további vesszőre a kihagyott age argumentum helyének tárolásához, mivel birth a név alapján kerül átadásra.

A Visual Basic 15.5 előtti verzióiban, amikor a pozíció és a név keverékével adja meg az argumentumokat, a pozícióargumentumoknak előbb kell lenniük. Ha név alapján ad meg egy argumentumot, a fennmaradó argumentumokat név szerint kell átadni. A metódus következő hívása például BC30241 Display fordítóhibát jelenít meg: Elnevezett argumentum várható.

StudentInfo.Display("Mary", age:=19, #9/21/1998#)

A Visual Basic 15.5-től kezdődően a pozícióargumentumok nevesített argumentumokat követhetnek, ha a záró pozícióargumentumok a megfelelő pozícióban vannak. Ha a Visual Basic 15.5-ös verzióban van lefordítva, a metódus előző hívása Display sikeresen lefordítható, és a továbbiakban nem generál fordítási hibát BC30241.

A névvel ellátott és a pozícióargumentumok tetszőleges sorrendben való keverése és egyeztetése különösen akkor hasznos, ha elnevezett argumentumot szeretne használni a kód olvashatóbbá tétele érdekében. Az alábbi Person osztálykonstruktorhoz például két típusú Personargumentum szükséges, amelyek mindegyike lehet Nothing.

Public Sub New(name As String, father As Person, mother As Person, dateOfBirth As Date)

A vegyes névvel ellátott és pozícióargumentumok használatával egyértelművé teheti a kód szándékát, ha az father argumentumok Nothingértékemother:

Dim p = New Person("Mary", father:=Nothing, mother:=Nothing, #9/21/1998#)

Ha elnevezett argumentumokkal szeretné követni a pozícióargumentumokat, a következő elemet kell hozzáadnia a Visual Basic projektfájlhoz (*.vbproj):

<PropertyGroup>
  <LangVersion>15.5</LangVersion>
</PropertyGroup>

További információkért lásd a Visual Basic nyelvi verziójának beállítását.

Az argumentumok név szerinti megadásának korlátozásai

A kötelező argumentumok bevitelének elkerülése érdekében nem adhat át argumentumokat név szerint. Csak az opcionális argumentumokat hagyhatja ki.

Paramétertömb neve alapján nem adható át. Ennek az az oka, hogy amikor meghívja az eljárást, meghatározatlan számú vesszővel tagolt argumentumot ad meg a paramétertömbhöz, és a fordító nem tud több argumentumot egyetlen névvel társítani.

Lásd még