Поделиться через


Практическое руководство. Определение оператора

Обновлен: Ноябрь 2007

Если определены класс или структура, то можно определить поведение стандартного оператора (такого как *, <> или And) при одном или двух относящихся в этому типу операндах.

Определите внутри класса или структуры стандартный оператор как процедуру оператора. Все процедуры оператора должны бытьPublicShared.

Определение оператора в классе или структуре называется также перегрузкой оператора.

Пример

В следующем примере определяется оператор + для структуры с именем 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

Дополнительные сведения и примеры содержатся в Перегрузка операторов в Visual Basic 2005.

См. также

Задачи

Практическое руководство. Определение оператора преобразования

Практическое руководство. Вызов процедуры оператора

Практическое руководство. Использование класса, в котором определяются операторы

Практическое руководство. Объявление структуры

Основные понятия

Процедуры операторов

Ссылки

Оператор Operator

Инструкция Structure