Dela via


Gör så här: Definiera en operator (Visual Basic)

Om du har definierat en klass eller struktur kan du definiera beteendet för en standardoperator (till exempel *, <>eller And) när en eller båda operanderna är av typen av klass eller struktur.

Definiera standardoperatorn som en operatorprocedur inom klassen eller strukturen. Alla operatorprocedurer måste vara PublicShared.

Att definiera en operator för en klass eller struktur kallas även för överlagring av operatorn.

Exempel

I följande exempel definieras operatorn + för en struktur med namnet height. Strukturen använder höjder som mäts i fötter och tum. En tum är 2,54 centimeter och en fot är 12 tum. För att säkerställa normaliserade värden (tum < 12,0) utför konstruktorn modulo 12-aritmetik. Operatorn + använder konstruktorn för att generera normaliserade värden.

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

Du kan testa strukturen height med följande kod.

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

Se även