Eljárás túlterhelése (Visual Basic)
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
Érték visszaadása
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ásukkal megfelelően megkülönböztetett, túlterhelt verziók között eltérő lehet.
Késői kötött argumentumok. 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 egy tranzakciós összeget is el szeretne fogadni vagy Decimal
Single
, akkor további túlterhelést post
is okozhat ennek a variációnak a engedélyezéséhez. 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 eljárás használatához post
a hívó kód beolvashatja az ügyfélazonosítást String
egy vagy egyként Integer
, majd mindkét esetben meghívhatja ugyanazt az eljárást. A következő példa ezt illusztrálja:
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
- Útmutató: Túlterhelt eljárás meghívása
- Útmutató: Az opcionális paramétereket használó eljárás túlterhelése
- Útmutató: Olyan eljárás túlterhelése, amely határozatlan számú paramétert vesz igénybe
- A túlterhelési eljárások szempontjai
- Túlterhelés feloldás
- Túlterhelés
- Általános típusok a Visual Basicben