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 operátori eljárás olyan Visual Basic-utasítások sorozata, amelyek meghatározzák egy szabványos operátor (például *, <>vagy And) viselkedését egy ön által definiált osztályon vagy struktúrán. Ezt operátor-túlterhelésnek is nevezik.
Mikor kell operátori eljárásokat definiálni?
Amikor definiált egy osztályt vagy struktúrát, deklarálhat változókat az adott osztály vagy struktúra típusának. Előfordulhat, hogy egy ilyen változónak egy kifejezés részeként részt kell vennie egy műveletben. Ehhez egy operátor operandusának kell lennie.
A Visual Basic csak az alapvető adattípusokon definiál operátorokat. Az operátorok viselkedését akkor határozhatja meg, ha az egyik vagy mindkét operandus az osztály vagy a struktúra típusa.
További információ: Operátori utasítás.
Az operátori eljárás típusai
Az operátori eljárás az alábbi típusok egyike lehet:
Egy unáris operátor definíciója, ahol az argumentum az osztály vagy struktúra típusú.
Bináris operátor definíciója, amelyben az argumentumok legalább egyike az osztály vagy a struktúra típusa.
Egy konverziós operátor definíciója, amelyben az argumentum az osztály vagy a struktúra típusa.
Egy konverziós operátor definíciója, amely az osztály vagy a struktúra típusát adja vissza.
A konverziós operátorok mindig egyváltozósak, és CType-t használja mindig a definiálandó operátorként.
Deklaráció szintaxisa
Az operátori eljárás deklarálásának szintaxisa a következő:
Public Shared [Widening | Narrowing] Operator operatorsymbol ( operand1 [, operand2 ]) As datatype
' Statements of the operator procedure.
End Operator
A(z) Widening vagy Narrowing kulcsszót csak a típuskonvertálási operátoron használhatja. Az operátorszimbólum mindig CType operátor egy típuskonvertálási operátorhoz.
Két operandust deklarál egy bináris operátor definiálásához, és egy operandust deklarál egy nem szereplő operátor definiálásához, beleértve a típuskonvertálási operátort is. Minden operandust deklarálni ByValkell.
Az egyes operandusokat ugyanúgy deklarálja, mint az aleljárások paramétereit.
Adattípus
Mivel egy operátort definiál egy ön által definiált osztályon vagy struktúrán, az operandusok legalább egyikének az adott osztály vagy struktúra adattípusához kell tartoznia. Típuskonvertálási operátor esetén az operandusnak vagy a visszatérési típusnak az osztály vagy a struktúra adattípusának kell lennie.
További részletekért lásd: Operátori utasítás.
Hívási szintaxis
Egy operátori eljárást implicit módon hív meg egy kifejezés operátorszimbólumával. Az operandusokat ugyanúgy adja meg, mint amikor előre definiált operátorokat használ.
Az operátori eljárás implicit hívásának szintaxisa a következő:
Dim testStruct As
structurename
Dim testNewStruct As
structurename= testStructoperátorokymbol10
A deklaráció és a hívás illusztrációja
Az alábbi struktúra egy aláírt 128 bites egész számértéket tárol a rendszerösszetevő nagy és alacsony sorrendű részeiként. Az + operátor két veryLong érték összeadására és egy veryLong érték eredményeként létrehozására szolgál.
Public Structure veryLong
Dim highOrder As Long
Dim lowOrder As Long
Public Shared Operator +(ByVal v As veryLong,
ByVal w As veryLong) As veryLong
Dim sum As New veryLong
sum = v
Try
sum.lowOrder += w.lowOrder
Catch ex As System.OverflowException
sum.lowOrder -= (Long.MaxValue - w.lowOrder + 1)
sum.highOrder += 1
End Try
sum.highOrder += w.highOrder
Return sum
End Operator
End Structure
Az alábbi példa egy tipikus hívást mutat be a + megadott operátorhoz veryLong.
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2