Процедуры операторов (Visual Basic)
Процедура оператора — это ряд инструкций Visual Basic, определяющих поведение стандартного оператора (например *
, <>
или ) And
для определенного класса или структуры. Это также называется перегрузкой оператора.
Когда следует определять процедуры операторов
При определении класса или структуры можно объявить переменные типом этого класса или структуры. Иногда такая переменная должна участвовать в операции как часть выражения. Для этого он должен быть операндом оператора.
Visual Basic определяет операторы только в основных типах данных. Можно определить поведение оператора, если один или оба операнда имеют тип класса или структуры.
Дополнительные сведения см. в инструкции оператора.
Типы процедуры оператора
Процедура оператора может быть одной из следующих типов:
Определение унарного оператора, в котором аргумент имеет тип класса или структуры.
Определение двоичного оператора, где по крайней мере один из аргументов имеет тип класса или структуры.
Определение оператора преобразования, в котором аргумент имеет тип класса или структуры.
Определение оператора преобразования, возвращающего тип класса или структуры.
Операторы преобразования всегда унарны и всегда используются CType
в качестве определяемого оператора.
Синтаксис объявления
Синтаксис для объявления процедуры оператора выглядит следующим образом:
Public Shared [Widening | Narrowing] Operator operatorsymbol ( operand1 [, operand2 ]) As datatype
' Statements of the operator procedure.
End Operator
Вы используете ключевое Widening
Narrowing
слово только в операторе преобразования типов. Символ оператора всегда является функцией CType для оператора преобразования типов.
Вы объявляете два операнда для определения двоичного оператора, и вы объявляете один операнд для определения унарного оператора, включая оператор преобразования типов. Все операнды должны быть объявлены ByVal
.
Каждый операнд объявляется так же, как вы объявляете параметры для вложенных процедур.
Тип данных
Так как вы определяете оператор для определенного класса или структуры, по крайней мере один из операндов должен иметь тип данных этого класса или структуры. Для оператора преобразования типов операнд или возвращаемый тип должен иметь тип данных класса или структуры.
Дополнительные сведения см. в инструкции оператора.
Синтаксис вызова
Процедура оператора вызывается неявно с помощью символа оператора в выражении. Операнды предоставляются так же, как и для предопределенных операторов.
Синтаксис неявного вызова процедуры оператора выглядит следующим образом:
Dim testStruct As
имя структуры
Dim testNewStruct As
Операторы structurenameymbol= testStruct
10
Иллюстрация объявления и вызова
Следующая структура сохраняет 128-разрядное целое число со знаком как составляющие части высокого порядка и низкого порядка. Он определяет +
оператор для добавления двух veryLong
значений и создания результирующего veryLong
значения.
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
В следующем примере показан типичный вызов оператора, определенного +
в veryLong
.
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2
См. также
- Процедуры
- Подпрограммы
- Функции
- Процедуры свойств
- Параметры и аргументы процедуры
- Оператор Statement
- Практическое руководство. Определение оператора
- Практическое руководство. Определение оператора преобразования
- Практическое руководство. Вызов процедуры оператора
- Практическое руководство. Использование класса, в котором определяются операторы