Практическое руководство. Определение оператора (Visual Basic)
Если вы определили класс или структуру, можно определить поведение стандартного оператора (например*
<>
, или And
) при наличии одного или обоих операндов типа класса или структуры.
Определите стандартный оператор как процедуру оператора в классе или структуре. Все процедуры оператора должны быть Public
Shared
.
Определение оператора класса или структуры также называется перегрузкой оператора.
Пример
В следующем примере определяется +
оператор для структуры, называемой height
. Структура использует высоту, измеряемую в футах и дюймах. Один дюйм составляет 2,54 сантиметра, и одна нога составляет 12 дюймов. Чтобы обеспечить нормализованные значения (дюймы < 12,0), конструктор выполняет арифметический модуль 12. Оператор +
использует конструктор для создания нормализованных значений.
Public Shadows Structure height
' Need Shadows because System.Windows.Forms.Form also defines property Height.
Private feet As Integer
Private inches As Double
Public Sub New(ByVal f As Integer, ByVal i As Double)
Me.feet = f + (CInt(i) \ 12)
Me.inches = i Mod 12.0
End Sub
Public Overloads Function ToString() As String
Return Me.feet & "' " & Me.inches & """"
End Function
Public Shared Operator +(ByVal h1 As height,
ByVal h2 As height) As height
Return New height(h1.feet + h2.feet, h1.inches + h2.inches)
End Operator
End Structure
Вы можете протестировать структуру height
с помощью следующего кода.
Public Sub consumeHeight()
Dim p1 As New height(3, 10)
Dim p2 As New height(4, 8)
Dim p3 As height = p1 + p2
Dim s As String = p1.ToString() & " + " & p2.ToString() &
" = " & p3.ToString() & " (= 8' 6"" ?)"
Dim p4 As New height(2, 14)
s &= vbCrLf & "2' 14"" = " & p4.ToString() & " (= 3' 2"" ?)"
Dim p5 As New height(4, 24)
s &= vbCrLf & "4' 24"" = " & p5.ToString() & " (= 6' 0"" ?)"
MsgBox(s)
End Sub
См. также
- Процедуры операторов
- Практическое руководство. Определение оператора преобразования
- Практическое руководство. Вызов процедуры оператора
- Практическое руководство. Использование класса, в котором определяются операторы
- Оператор Statement
- Оператор Structure
- Практическое руководство. Объявление структуры
- Оператор Mod