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 Operanden vom Typ Ihrer Klasse oder Struktur sind.
Definieren Sie den Standardoperator als Operatorprozedur innerhalb der Klasse oder Struktur. Alle Operatorprozeduren müssen Public
Shared
sein.
Das Definieren eines Operators für eine Klasse oder Struktur wird auch als Überladen des Operators bezeichnet.
Beispiel
Im folgenden Beispiel wird der Operator +
für eine Struktur namens height
definiert. Die Struktur verwendet Höhen, die in Fuß und Zoll gemessen werden. Ein Zoll entspricht 2,54 cm, und ein Fuß entspricht 12 Zoll. Um normalisierte Werte (Zoll < 12,0) sicherzustellen, führt der Konstruktor „modulo2“-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 Struktur height
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