Freigeben über


Operatorprozeduren

Aktualisiert: November 2007

Eine Operatorprozedur ist eine Reihe von Visual Basic-Anweisungen, die das Verhalten eines Standardoperators (z. B. *, <> oder And) in einer Klasse oder Struktur definieren, die Sie definiert haben. Dies wird auch als Überladen des Operators bezeichnet.

Zeitpunkt für die Definition von Operatorprozeduren

Wenn Sie eine Klasse oder Struktur definiert haben, können Sie Variablen deklarieren, die dem Typ dieser Klasse oder Struktur angehören. Gelegentlich muss eine solche Variable innerhalb eines Ausdrucks in einer Operation verwendet werden. Dazu muss diese Variable ein Operand eines Operators sein.

Visual Basic definiert nur die grundlegenden Datentypen von Operatoren. Sie können das Verhalten eines Operators definieren, wenn mindestens einer der Operanden dem Typ der Klasse oder Struktur entspricht.

Weitere Informationen finden Sie unter Operator-Anweisung.

Typen von Operatorprozeduren

Eine Operatorprozedur kann einem der folgenden Typen angehören:

  • Eine Definition eines unären Operators, wobei das Argument den gleichen Typ wie die Klasse oder Struktur aufweist.

  • Eine Definition eines binären Operators, wobei mindestens eines der Argumente den gleichen Typ wie die Klasse oder Struktur aufweist.

  • Eine Definition eines Konvertierungsoperators, wobei das Argument den gleichen Typ wie die Klasse oder Struktur aufweist.

  • Eine Definition eines Konvertierungsoperators, der den Typ der Klasse oder Struktur zurückgibt.

Konvertierungsoperatoren sind immer unär, und als Operator wird stets CType definiert.

Deklarationssyntax

Die Syntax zur Deklaration einer Operatorprozedur lautet wie folgt:

Public Shared [Widening | Narrowing] OperatorOperatorsymbol (Operand1 [, Operand2]) As Datentyp

' Statements of the operator procedure.

End Operator

Das Widening-Schlüsselwort oder das Narrowing-Schlüsselwort wird nur für einen Typkonvertierungsoperator verwendet. Das Operatorsymbol für einen Typkonvertierungsoperator ist stets CType-Funktion.

Zur Definition eines binären Operators deklarieren Sie zwei Operanden, und zur Definition eines unären Operators sowie eines Typkonvertierungsoperators deklarieren Sie einen Operanden. Für alle Operanden ist eine ByVal-Deklaration erforderlich.

Jeder Operand wird auf die gleiche Weise deklariert wie Parameter für Sub-Prozeduren.

Datentyp

Da Sie einen Operator für eine von Ihnen definierte Klasse oder Struktur definieren, muss mindestens einer der Operanden den gleichen Datentyp wie diese Klasse oder Struktur aufweisen. Bei einem Typkonvertierungsoperator müssen der Datentyp des Operanden oder der Rückgabetyp dem Datentyp der Klasse oder Struktur entsprechen.

Weitere Informationen finden Sie unter Operator-Anweisung.

Aufrufsyntax

Zum impliziten Aufrufen einer Operatorprozedur verwenden Sie das Operatorsymbol in einem Ausdruck. Sie geben die Operanden auf die gleiche Weise an wie vordefinierte Operatoren.

Die Syntax für einen impliziten Aufruf einer Operatorprozedur lautet wie folgt:

Dim testStruct As Strukturname

Dim testNewStruct As Strukturname = testStruct Operatorsymbol 10

Darstellung von Deklaration und Aufruf

Die folgende Struktur speichert einen ganzzahligen 128-Bit-Wert mit Vorzeichen als die konstituierenden höherwertigen und niedrigwertigen Teile. Sie definiert den +-Operator, mit dem zwei veryLong -Werte hinzugefügt und ein resultierender veryLong -Wert generiert werden.

Public Structure veryLong
    Dim highOrder As Long
    Dim lowOrder As Long
    Public Shared Operator +(ByVal v As veryLong, _
                             ByVal w As veryLong) As veryLong
        Dim sum As New veryLong
        sum = v
        Try
            sum.lowOrder += w.lowOrder
        Catch ex As System.OverflowException
            sum.lowOrder -= (Long.MaxValue - w.lowOrder + 1)
            sum.highOrder += 1
        End Try
        sum.highOrder += w.highOrder
        Return sum
    End Operator
End Structure

Das folgende Beispiel zeigt einen typischen Aufruf des als veryLong definierten +-Operators.

Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2

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

Siehe auch

Aufgaben

Gewusst wie: Definieren eines Operators

Gewusst wie: Definieren eines Konvertierungsoperators

Gewusst wie: Aufrufen einer Operatorprozedur

Gewusst wie: Verwenden einer Klasse, die Operatoren definiert

Konzepte

Prozeduren in Visual Basic

Sub-Prozeduren

Function-Prozeduren

Property-Prozeduren

Parameter und Argumente von Prozeduren

Referenz

Operator-Anweisung