Operátori eljárások (Visual Basic)
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 nem szereplő operátor definíciója, amelyben az argumentum az osztály vagy a struktúra típusa.
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 unary, és mindig a definiált operátort használja CType
.
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 kulcsszót Widening
Narrowing
csak típuskonvertálási operátoron használja. Az operátorszimbólum mindig CType függvény egy típuskonvertálási operátor esetében.
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 ByVal
kell.
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ás szintaxisa
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 az előre definiált operátorok esetében.
Az operátori eljárás implicit hívásának szintaxisa a következő:
Dim testStruct As
structurename
Dim testNewStruct As
structurename = testStruct
operátorokymbol 10
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átort +
két veryLong
érték hozzáadására és az eredményként kapott érték létrehozására veryLong
határozza meg.
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
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: