Condividi tramite


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

Routine in Visual Basic

Routine Sub

Routine Function

Routine Property

Parametri e argomenti delle routine

Riferimenti

Istruzione Operator