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