Operator — Instrukcja
Deklaruje symbol operatora, operandy i definiowania procedury operatora na klasy lub struktury kodu.
[ <attrlist> ] Public [ Overloads ] Shared [ Shadows ] [ Widening | Narrowing ]
Operator operatorsymbol ( operand1 [, operand2 ]) [ As [ <attrlist> ] type ]
[ statements ]
[ statements ]
Return returnvalue
[ statements ]
End Operator
Części
attrlist
Opcjonalne.Zobacz listy atrybutów.Public
Wymagane.Wskazuje, że ta procedura operator ma Public (Visual Basic) dostępu.Overloads
Opcjonalne.See Overloads (Visual Basic).Shared
Wymagane.Wskazuje, że jest to procedura operator Shared (Visual Basic) procedury.Shadows
Opcjonalne.See Shadows (Visual Basic).Widening
Wymagane dla operatora konwersji, chyba że zostanie to Narrowing.Wskazuje, że ta procedura operator definiuje Widening (Visual Basic) konwersji.Na tej stronie pomocy, zobacz temat "Poszerzenia i zawężanie konwersje".Narrowing
Wymagane dla operatora konwersji, chyba że zostanie to Widening.Wskazuje, że ta procedura operator definiuje Narrowing (Visual Basic) konwersji.Na tej stronie pomocy, zobacz temat "Poszerzenia i zawężanie konwersje".operatorsymbol
Wymagane.Symbol lub identyfikator operator, który określa tę procedurę operatora.operand1
Wymagane.Nazwa i typ pojedynczym operandzie operator jednoargumentowy (łącznie z operatora konwersji) lub lewy operand operatora dwuargumentowego.operand2
Wymagane dla operatorów binarnych.Nazwa i typ prawy operand operatora dwuargumentowego.operand1i operand2 mają następującą składnię i części:
[ ByVal ] operandname [ As operandtype ]
Część
Opis
ByVal
Opcjonalne, ale mechanizm przekazywania musi być ByVal (Visual Basic).
operandname
Wymagane.Nazwa zmiennej, reprezentujących ten operand.See Zadeklarowane nazwy elementów (Visual Basic).
operandtype
Opcjonalne chyba że Option Strict jest On.Typ danych tego operandu.
type
Opcjonalne chyba że Option Strict jest On.Zwraca typ danych wartości procedury operatora.statements
Opcjonalne.Blok instrukcji, które uruchamiana jest procedura operatora.returnvalue
Wymagane.Wartość, która procedura operator zwraca do kodu wywołującego.End Operator
Wymagane.Kończy definicję tej procedury operatora.
Uwagi
Można użyć Operator tylko w klasie lub strukturze.Oznacza to, kontekście deklaracji podmiot gospodarczy nie może być plik źródłowy, obszar nazw, moduł, interfejs, procedury lub bloku.Aby uzyskać więcej informacji, zobacz Kontekst deklaracji i domyślne poziomy dostępu (Visual Basic).
Wszystkie podmioty gospodarcze muszą być Public Shared.Nie można określić ByRef, Optional, lub ParamArray dla obu operandu.
Symbol operatora lub identyfikator nie można używać do przechowywania wartości zwracanej.Należy użyć Return instrukcji, a należy określić wartość.Dowolna liczba Return sprawozdań może pojawiać się wszędzie w procedurze.
Definiowanie operatora w ten sposób jest nazywany przeciążanie operatora, niezależnie od tego, czy korzystasz z Overloads słowa kluczowego.Poniższa tabela zawiera listę operatorów, które można zdefiniować.
Typ |
Podmioty gospodarcze |
---|---|
Jednoargumentowy |
+, -, IsFalse, IsTrue, Not |
Binarne |
+, -, *, /, \, &, ^, >>, <<, =, <>, >, >=, <, <=, And, Like, Mod, Or, Xor |
Konwersja (jednoargumentowy) |
CType |
Należy zauważyć, że = operator binarny listy jest operator porównania, a nie operatora przypisania.
Podczas definiowania CType, trzeba określić albo Widening lub Narrowing.
Parami
Niektóre podmioty gospodarcze muszą zdefiniować jako parami.Można zdefiniować albo operator taki pary, należy zdefiniować inne również.Dopasowane parami są następujące:
=i<>
>i<
>=i<=
IsTrueiIsFalse
Ograniczenia dotyczące typu danych
Każdy operator, który definiujesz musi obejmować klasy lub struktury, w którym można zdefiniować.Oznacza to, że klasy lub struktury muszą być ujęte jako typ danych z następujących czynności:
Operand operator unarny.
Co najmniej jeden z argumentów operatora dwuargumentowego.
Operand lub zwracany typ operatora konwersji.
Niektóre podmioty gospodarcze mają dodatkowe dane, ograniczenia, należy wpisać następująco:
W przypadku zdefiniowania IsTrue i IsFalse operatorów, muszą one zarówno zwracać Boolean typu.
W przypadku zdefiniowania << i >> operatorów, muszą one zarówno określić Integer wpisz operandtype z operand2.
Zwracany typ nie odpowiada typowi albo operandu.Na przykład operator porównania takich jak = lub <> może zwracać Boolean , nawet jeśli żadna operand jest Boolean.
Operatory logiczne i operatory
And, Or, Not, I Xor operatorów można wykonywać operacje logiczne lub operatory w języku Visual Basic.Jednak zdefiniować klasy lub struktury jeden z tych operatorów, można zdefiniować tylko jego operacji na poziomie bitowym.
Nie można zdefiniować AndAlso operatora bezpośrednio z Operator instrukcji.Można jednak użyć AndAlso , jeżeli zostały spełnione następujące warunki:
Zostały zdefiniowane And na te same typy operand ma być używany dla AndAlso.
Swoją definicję And zwraca tego samego typu co klasy lub struktury, na który zostały zdefiniowane go.
Zostały zdefiniowane IsFalse operatora na klasy lub struktury, na który zostały zdefiniowane And.
Podobnie, można użyć OrElse , jeśli zostały zdefiniowane Or na tym samym operandy z zwracany typ klasy lub struktury, a zostały zdefiniowane IsTrue na klasy lub struktury.
Rozszerzanie i zawężanie konwersji
A poszerzenie konwersji zawsze powiedzie się w czasie wykonywania, podczas gdy zawężanie konwersji może się nie powieść w czasie wykonywania.Aby uzyskać więcej informacji, zobacz Rozszerzanie i zwężanie konwersji (Visual Basic).
Przy deklarowaniu procedury konwersji za Widening, kod procedury nie może wygenerować wszelkie błędy.Oznacza to, następujące czynności:
Musi zawsze powrócić prawidłowe wartości typu type.
To musi obsługiwać wszystkich możliwych wyjątków i innych warunków błędów.
To musi obsługiwać wszelkie zwraca błąd z wszelkich procedur, które wywołuje.
Jeśli nie ma żadnej możliwości, że procedury konwersji może się nie powieść, lub że może spowodować, że nieobsłużony wyjątek, należy zadeklarować należy je Narrowing.
Przykład
Następujący kod w przykładzie wykorzystano Operator instrukcji do definiowania konspektu struktury, która zawiera procedury operator And, Or, IsFalse, i IsTrue podmiotów gospodarczych.Andi Or każdego z nich mają dwa operandy typu abc i zwraca typ abc.IsFalsei IsTrue podjąć każdy pojedynczy argument typu abc i zwraca Boolean.Te definicje umożliwienia kodu wywołującego w celu użycia And, AndAlso, Or, i OrElse z argumentem typu abc.
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
Zobacz też
Zadania
Porady: definiowanie operatora (Visual Basic)
Porady: definiowanie operatora konwersji (Visual Basic)
Porady: wywoływanie procedury operatora (Visual Basic)
Porady: używanie klasy definiującej operatory (Visual Basic)
Informacje
IsFalse — Operator (Visual Basic)
IsTrue — Operator (Visual Basic)