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.
Deklarálja az operátorszimbólumot, az operandusokat és a kódot, amelyek operátori eljárást határoznak meg egy osztályon vagy struktúrán.
Szemantika
[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
[ statements ]
[ statements ]
Return returnvalue
[ statements ]
End Operator
Részek
attrlist
Opcionális. Lásd : Attribútumlista.
Public
Szükséges. Azt jelzi, hogy ez az operátori eljárás nyilvános hozzáféréssel rendelkezik.
Overloads
Opcionális. Lásd : Túlterhelések.
Shared
Szükséges. Azt jelzi, hogy ez az operátori eljárás megosztott eljárás.
Shadows
Opcionális. Lásd : Árnyékok.
Widening
A konvertálási operátorhoz szükséges, hacsak nem adja meg Narrowing. Azt jelzi, hogy ez az operátori eljárás szélesítési konverziót határoz meg. A súgólapon a "Konvertálások bővítése és szűkítése" című témakörben olvashat.
Narrowing
A konvertálási operátorhoz szükséges, hacsak nem adja meg Widening. Azt jelzi, hogy ez az operátori eljárás szűkítési konverziót határoz meg. A súgólapon a "Konvertálások bővítése és szűkítése" című témakörben olvashat.
operatorsymbol
Szükséges. Az operátori eljárás által definiált operátor szimbóluma vagy azonosítója.
operand1
Szükséges. Egy nem szereplő operátor (beleértve a konverziós operátort is) vagy a bináris operátor bal operandusának neve és típusa.
operand2
Bináris operátorokhoz szükséges. Egy bináris operátor jobb operandusának neve és típusa.
operand1 és operand2 a következő szintaxist és részeket tartalmazza:
[ ByVal ] operandname [ As operandtype ]
| Rész | Leírás |
|---|---|
ByVal |
Nem kötelező, de az átadási mechanizmusnak ByValnak kell lennie. |
operandname |
Szükséges. Az operandusnak jelölő változó neve. Lásd: Deklarált elemnevek. |
operandtype |
Nem kötelező, kivéve, ha Option Strict az On. Az operandus adattípusa. |
type
Nem kötelező, kivéve, ha Option Strict az On. Az operátori eljárás által visszaadott érték adattípusa.
statements
Opcionális. Az operátori eljárás által futtatott utasítások blokkja.
returnvalue
Szükséges. Az az érték, amelyet az operátori eljárás a hívó kódhoz ad vissza.
End
Operator
Szükséges. Leállítja az operátori eljárás definícióját.
Megjegyzések
Csak osztályban vagy struktúrában használható Operator . Ez azt jelenti, hogy egy operátor deklarációs környezete nem lehet forrásfájl, névtér, modul, interfész, eljárás vagy blokk. További információ: Deklarációs környezetek és alapértelmezett hozzáférési szintek.
Minden operátornak meg kell lennie Public Shared. Nem adhatja meg ByRefaz operandusokat Optionalvagy ParamArray az operandusokat.
Az operátor szimbóluma vagy azonosítója nem használható visszatérési érték tárolására. Az utasítást Return használnia kell, és meg kell adnia egy értéket. Tetszőleges számú Return utasítás jelenhet meg az eljárás bármely pontján.
Az operátorok ily módon történő definiálását operátor-túlterhelésnek nevezzük, függetlenül attól, hogy a kulcsszót Overloads használja-e. Az alábbi táblázat felsorolja a definiálható operátorokat.
| Típus | Működtetők |
|---|---|
| Unáris |
+, -, IsFalse, IsTrueNot |
| Bináris |
+, -, *, /, \, &^, >>, <<, =, , <>, >, >=, , <, <=, And, Like, ModOr,Xor |
| Átalakítás (unary) | CType |
Vegye figyelembe, hogy a = bináris listában szereplő operátor az összehasonlító operátor, nem pedig a hozzárendelési operátor.
A definiáláskor CTypemeg kell adnia vagy WideningNarrowing.
Párosított párok
Bizonyos operátorokat párosított párként kell definiálnia. Ha egy ilyen pár bármelyik operátorát definiálja, a másikat is meg kell határoznia. A párosított párok a következők:
=és<>>és<>=és<=IsTrueésIsFalse
Adattípus-korlátozások
Minden definiált operátornak tartalmaznia kell azt az osztályt vagy struktúrát, amelyre meghatározza. Ez azt jelenti, hogy az osztálynak vagy struktúrának az alábbi adattípusként kell megjelennie:
Egy unáris operátor operandusa.
Legalább egy bináris operátor operandusa.
A konvertálási operátor operandusa vagy visszatérési típusa.
Egyes operátorok további adattípus-korlátozásokkal rendelkeznek, az alábbiak szerint:
Ha megadja a és
IsFalseazIsTrueoperátorokat, mindkettőnek a típustBooleankell visszaadnia.Ha megadja a és az
<<operátorokat, mindkettőnek meg kell adnia aIntegertípustoperand2.operandtype>>
A visszatérési típusnak nem kell egyeznie egyik operandus típusával sem. Egy összehasonlítási = operátor például akkor is visszaadhatóBoolean, <> ha egyik Booleanoperandus sem.
Logikai és bitenkénti operátorok
A And, Or, Notés Xor operátorok logikai vagy bitenkénti műveleteket hajthatnak végre a Visual Basicben. Ha azonban az egyik operátort osztályon vagy struktúrán definiálja, csak a bitenkénti műveletet határozhatja meg.
Az operátort AndAlso nem definiálhatja közvetlenül utasítással Operator . A következő feltételek teljesülése esetén azonban használhatja AndAlso :
Ugyanazokat az operandustípusokat definiálta
And, amelyekhez használni szeretné.AndAlsoA definíció
Andugyanazt a típust adja vissza, mint az az osztály vagy struktúra, amelyen definiálta.Ön definiálta az operátort
IsFalseazon az osztályon vagy struktúrán, amelyen definiáltaAnd.
Hasonlóképpen használhatja OrElse , ha ugyanazon operandusokon definiálta Or az osztály vagy struktúra visszatérési típusát, és az osztályon vagy a struktúrán definiálta IsTrue .
Konverziók bővítése és szűkítése
A szélesítő átalakítás futásidőben mindig sikeres, míg a szűkítő átalakítás futásidőben meghiúsulhat. További információkért lásd a konverziók kibővítését és szűkítését ismertető témakört.
Ha konverziós eljárást Wideningállít be, az eljáráskód nem okozhat hibákat. Ez a következőt jelenti:
Mindig érvényes típusú
typeértéket kell visszaadnia.Az összes lehetséges kivételt és egyéb hibafeltételt kezelnie kell.
Minden olyan hibát kezelnie kell, amely az általa hívott eljárásokból származik.
Ha lehetséges, hogy egy konvertálási eljárás nem sikerül, vagy hogy kezeletlen kivételt okozhat, deklarálnia kell azt Narrowing.
példa
Az alábbi példakód egy Operator olyan struktúra körvonalának meghatározására szolgál, amely a , Or, IsFalseés IsTrue operátorok operátori eljárásait Andtartalmazza.
And és Or mindegyik két operandus típusú abc és visszatérési típusú abc.
IsFalse és IsTrue mindegyik egyetlen operandus típusú abc és visszatérési Boolean. Ezek a definíciók lehetővé teszik a hívó kód használatát And, AndAlsoOrés OrElse a típus abcoperandusait.
Public Structure abc
Dim d As Date
Public Shared Operator And(ByVal x As abc, ByVal y As abc) As abc
Dim r As New abc
' Insert code to calculate And of x and y.
Return r
End Operator
Public Shared Operator Or(ByVal x As abc, ByVal y As abc) As abc
Dim r As New abc
' Insert code to calculate Or of x and y.
Return r
End Operator
Public Shared Operator IsFalse(ByVal z As abc) As Boolean
Dim b As Boolean
' Insert code to calculate IsFalse of z.
Return b
End Operator
Public Shared Operator IsTrue(ByVal z As abc) As Boolean
Dim b As Boolean
' Insert code to calculate IsTrue of z.
Return b
End Operator
End Structure