Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az eljárás túlterhelése azt jelenti, hogy több verzióban definiálja ugyanazt a nevet, de különböző paraméterlistákat használ. A túlterhelés célja az eljárás több, egymáshoz szorosan kapcsolódó verziójának meghatározása anélkül, hogy név szerint kellene megkülönböztetni őket. Ezt a paraméterlista eltérő használatával teheti meg.
Túlterhelési szabályok
Ha túlterhel egy eljárást, a következő szabályok érvényesek:
Ugyanaz a név. Minden túlterhelt verziónak ugyanazt az eljárásnevet kell használnia.
Eltérő aláírás. Minden túlterhelt verziónak különböznie kell az összes többi túlterhelt verziótól az alábbi szempontok legalább egyikében:
Paraméterek száma
A paraméterek sorrendje
A paraméterek adattípusai
Típusparaméterek száma (általános eljárás esetén)
Visszatérési típus (csak konverziós operátor esetén)
Az eljárás nevével együtt az előző elemeket együttesen az eljárás aláírásának nevezzük. Túlterhelt eljárás meghívásakor a fordító az aláírással ellenőrzi, hogy a hívás helyesen egyezik-e a definícióval.
Az aláírás részét nem képező elemek. Az eljárásokat nem terhelheti túl az aláírás megváltozása nélkül. Az eljárásokat nem lehet túlterhelni úgy, hogy csak egy vagy több elemet változtat meg:
Eljárásmódosító kulcsszavak, például
Public
: ,Shared
ésStatic
Paraméter- vagy típusparaméternevek
Típusparaméter-megkötések (általános eljárás esetén)
Paramétermódosító kulcsszavak, például
ByRef
ésOptional
Visszatér-e értékkel
A visszatérési érték adattípusa (a konverziós operátor kivételével)
Az előző lista elemei nem részei az aláírásnak. Bár nem használhatja őket a túlterhelt verziók megkülönböztetésére, az aláírásaik által megfelelően megkülönböztetett túlterhelt verziók között különbözőek lehetnek.
Late-Bound Argumentum. Ha késői kötött objektumváltozót szeretne átadni egy túlterhelt verziónak, deklarálnia kell a megfelelő paramétert Object.
Az eljárás több verziója
Tegyük fel, hogy egy Sub
tranzakciót egy ügyfél egyenlege alapján szeretne közzétenni, és név vagy számlaszám alapján szeretne hivatkozni az ügyfélre. Ennek megfelelően két különböző Sub
eljárást határozhat meg, ahogyan az alábbi példában is látható:
Sub postName(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Sub postAcct(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
Túlterhelt verziók
Egy másik lehetőség az egyetlen eljárásnév túlterhelése. A Túlterhelések kulcsszóval definiálhatja az eljárás egy verzióját az egyes paraméterek listájához az alábbiak szerint:
Overloads Sub post(ByVal custName As String, ByVal amount As Single)
' Insert code to access customer record by customer name.
End Sub
Overloads Sub post(ByVal custAcct As Integer, ByVal amount As Single)
' Insert code to access customer record by account number.
End Sub
További túlterhelések
Ha azt is szeretné, hogy elfogadjon egy tranzakciós összeget akár Decimal
, akár Single
, akkor tovább túlterhelheti a post
-t, hogy lehetővé tegye ezt a variációt. Ha ezt az előző példában szereplő összes túlterheléssel tette volna meg, négy Sub
eljárása lenne, amelyek mindegyike ugyanazzal a névvel, de négy különböző aláírással rendelkezik.
A túlterhelés előnyei
Az eljárás túlterhelésének előnye a hívás rugalmassága. Az előző példában deklarált post
eljárás használatához a hívó kód megszerezheti az ügyfélazonosítót akár String
-ként, akár Integer
-ként, majd mindkét esetben meghívhatja ugyanazt az eljárást. Az alábbi példa a következőket szemlélteti:
Imports MSVB = Microsoft.VisualBasic
Dim customer As String
Dim accountNum As Integer
Dim amount As Single
customer = MSVB.Interaction.InputBox("Enter customer name or number")
amount = MSVB.Interaction.InputBox("Enter transaction amount")
Try
accountNum = CInt(customer)
Call post(accountNum, amount)
Catch
Call post(customer, amount)
End Try
Lásd még
- Eljárások
- Útmutató: Eljárás több verziójának definiálása
- Hogyan hívjunk meg egy túlterhelt eljárást
- Útmutató: Eljárás túlterhelése, amely opcionális paramétereket fogad el
- Útmutató: Olyan eljárás túlterhelése, amely határozatlan számú paramétert
- Szempontok a túlterhelési eljárásoknál
- Túlterhelés feloldás
- túlterhelések
- Általános típusok a Visual Basic