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
Parameter und Argumente von Prozeduren