Routine di operatore
Aggiornamento: novembre 2007
Una routine di operatore è costituita da una serie di istruzioni Visual Basic che definiscono il comportamento di un operatore standard, ad esempio *, <> o And, su una classe o una struttura definita. Tale routine viene definita anche overload dell'operatore.
Definizione delle routine di operatore
Dopo aver definito una classe o una struttura, è possibile dichiarare le variabili dello stesso tipo di tale classe o struttura. Tali variabili devono talvolta partecipare a un'operazione come parte di un'espressione, ossia come operandi di un operatore.
In Visual Basic gli operatori vengono definiti solo sui tipi di dati più importanti. È possibile definire il comportamento di un operatore quando il tipo di uno o di entrambi gli operandi corrisponde a quello della classe o della struttura.
Per ulteriori informazioni, vedere Istruzione Operator.
Tipi delle routine di operatore
Una routine di operatore può essere di uno dei seguenti tipi:
Una definizione di un operatore unario in cui l'argomento è del tipo della classe o della struttura.
Una definizione di un operatore binario in cui almeno uno degli argomenti è del tipo della classe o della struttura.
Una definizione di un operatore di conversione in cui l'argomento è del tipo della classe o della struttura.
Una definizione di un operatore di conversione che restituisce il tipo della classe o della struttura.
Gli operatori di conversione sono sempre unari e CType viene sempre utilizzato come operatore da definire.
Sintassi di dichiarazione
La sintassi per dichiarare una routine di operatore è la seguente:
Public Shared [Widening | Narrowing] Operatoroperatorsymbol (operand1 [, operand2]) As tipodidati
' Statements of the operator procedure.
End Operator
Le parole chiave Widening o Narrowing vengono utilizzate solo su un operatore di conversione dei tipi. Il simbolo dell'operatore è sempre la Funzione CType per un operatore di conversione dei tipi.
Per definire un operatore binario è necessario dichiarare due operandi, mentre per definire un operatore unario è necessario dichiarare un operando, incluso un operatore di conversione dei tipi. Tutti gli operandi devono essere dichiarati ByVal.
La dichiarazione di ciascun operando viene eseguita in modo identico alla dichiarazione dei parametri per le Routine Sub.
Tipo di dati
Poiché la definizione di un operatore viene eseguita su una classe o una struttura già definita, almeno uno degli operandi deve essere del tipo di dati di tale classe o struttura. Per un operatore di conversione dei tipi, l'operando o il tipo restituito deve essere del tipo di dati della classe o della struttura.
Per informazioni dettagliate, vedere Istruzione Operator.
Sintassi di chiamata
Per richiamare una routine di operatore in modo implicito, è necessario utilizzare il simbolo dell'operatore in un'espressione. Gli operandi vengono forniti con le stesse modalità utilizzate per gli operatori predefiniti.
La sintassi per una chiamata implicita a una routine di operatore è la seguente:
Dim testStruct As structurename
Dim testNewStruct As structurename = testStruct operatorsymbol 10
Illustrazione della dichiarazione e della chiamata
Nella struttura riportata di seguito un valore integer con segno a 128 bit viene memorizzato come parte costitutiva più e meno significativa. L'operatore + viene definito per aggiungere due valori veryLong e generare un valore veryLong risultante.
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
Nell'esempio riportato di seguito viene illustrata una chiamata tipica all'operatore + definito su veryLong.
Dim v1, v2, v3 As veryLong
v1.highOrder = 1
v1.lowOrder = Long.MaxValue
v2.highOrder = 0
v2.lowOrder = 4
v3 = v1 + v2
Per ulteriori informazioni ed esempi, vedere Operator Overloading in Visual Basic 2005 (informazioni in lingua inglese).
Vedere anche
Attività
Procedura: definire un operatore
Procedura: definire un operatore di conversione
Procedura: chiamare una routine con operatore
Procedura: utilizzare una classe che definisce gli operatori
Concetti
Parametri e argomenti delle routine