Procedury operatorów (Visual Basic)
Procedura operatora to seria instrukcji języka Visual Basic, które definiują zachowanie operatora standardowego (takiego jak *
, <>
lub And
) w zdefiniowanej klasie lub strukturze. Jest to również nazywane przeciążeniem operatora.
Kiedy należy zdefiniować procedury operatora
Po zdefiniowaniu klasy lub struktury można zadeklarować zmienne jako typ tej klasy lub struktury. Czasami taka zmienna musi uczestniczyć w operacji w ramach wyrażenia. Aby to zrobić, musi być operandem operatora.
Visual Basic definiuje operatory tylko na podstawowych typach danych. Można zdefiniować zachowanie operatora, gdy jeden lub oba operandy są typu klasy lub struktury.
Aby uzyskać więcej informacji, zobacz Instrukcja operatora.
Typy procedury operatora
Procedura operatora może być jednym z następujących typów:
Definicja operatora jednoargumentowego, w którym argument jest typem klasy lub struktury.
Definicja operatora binarnego, w którym co najmniej jeden z argumentów jest typem klasy lub struktury.
Definicja operatora konwersji, w którym argument jest typem klasy lub struktury.
Definicja operatora konwersji zwracającego typ klasy lub struktury.
Operatory konwersji są zawsze jednoargumentowe i zawsze są używane CType
jako definiowany operator.
Składnia deklaracji
Składnia deklarowania procedury operatora jest następująca:
Public Shared [Widening | Narrowing] Operator operatorsymbol ( operand1 [, operand2 ]) As datatype
' Statements of the operator procedure.
End Operator
Używasz słowa kluczowego Widening
lub Narrowing
tylko dla operatora konwersji typu. Symbol operatora jest zawsze funkcją CType dla operatora konwersji typów.
Deklarujesz dwa operandy w celu zdefiniowania operatora binarnego i deklarujesz jeden operand w celu zdefiniowania operatora jednoargumentowego, w tym operatora konwersji typów. Wszystkie operandy muszą być zadeklarowane .ByVal
Każdy operand jest deklarowany w taki sam sposób, jak deklarowanie parametrów dla procedur podrzędnych.
Typ danych
Ponieważ definiujesz operator w zdefiniowanej klasie lub strukturze, co najmniej jeden z operandów musi być typu danych tej klasy lub struktury. W przypadku operatora konwersji typu operand lub zwracany typ musi być typu danych klasy lub struktury.
Aby uzyskać więcej informacji, zobacz Instrukcja operatora.
Wywoływanie składni
Procedura operatora jest wywoływana niejawnie przy użyciu symbolu operatora w wyrażeniu. Operandy są dostarczane w taki sam sposób, jak w przypadku wstępnie zdefiniowanych operatorów.
Składnia niejawnego wywołania procedury operatora jest następująca:
Dim testStruct As
nazwa struktury
Dim testNewStruct As
structurename = testStruct
operatorsymbol 10
Ilustracja deklaracji i wywołania
Poniższa struktura przechowuje podpisaną 128-bitową wartość całkowitą jako składowe części o wysokiej kolejności i niskiej kolejności. Definiuje operator, +
aby dodać dwie veryLong
wartości i wygenerować wynikową veryLong
wartość.
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
W poniższym przykładzie pokazano typowe wywołanie operatora zdefiniowanego +
na .veryLong
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2
Zobacz też
- z konkretnym obiektem
- Sub, procedury
- Procedury funkcji
- Procedury właściwości
- Parametry i argumenty procedur
- Operator, instrukcja
- Instrukcje: definiowanie operatora
- Instrukcje: definiowanie operatora konwersji
- Instrukcje: wywoływanie procedury operatora
- Instrukcje: używanie klasy definiującej operatory