Gewusst wie: Definieren eines Operators (Visual Basic)

Wenn Sie eine Klasse oder Struktur definiert haben, können Sie das Verhalten eines Standardoperators (z. B. *, <> oder And) definieren, wenn einer oder beide der Operanden den Typ der Klasse bzw. Struktur aufweisen.

Definieren Sie den Standardoperator als eine Operatorprozedur innerhalb der Klasse bzw. Struktur. Alle Operatorprozeduren müssen Public Shared sein.

Das Definieren eines Operators für eine Klasse oder Struktur wird auch als Überladen bezeichnet.

Beispiel

Im folgenden Beispiel wird der Operator + für eine Struktur mit dem Namen heightdefiniert. Die Struktur verwendet in Fuß und Zoll gemessene Höhen. Ein Zoll entspricht 2,54 Zentimetern, und ein Fuß ist 12 Zoll. Um normalisierte Werte (Zoll < 12,0) zu gewährleisten, führt der Konstruktor die Modulo-12-Arithmetik aus. Der Operator + verwendet den Konstruktor, um normalisierte Werte zu generieren.

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

Sie können die height -Struktur mit dem folgenden Code testen.

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

Weitere Informationen und Beispiele finden Sie unter Operator Overloading in Visual Basic 2005.

Siehe auch

Aufgaben

Gewusst wie: Definieren eines Konvertierungsoperators (Visual Basic)

Gewusst wie: Aufrufen einer Operatorprozedur (Visual Basic)

Gewusst wie: Verwenden einer Klasse, die Operatoren definiert (Visual Basic)

Gewusst wie: Deklarieren einer Struktur (Visual Basic)

Referenz

Operator-Anweisung

Structure-Anweisung

Konzepte

Operatorprozeduren (Visual Basic)