Condividi tramite


Routine Function

Aggiornamento: novembre 2007

Una routine Function è costituita da una serie di istruzioni Visual Basic racchiuse tra le istruzioni Function ed End Function. La routine Function esegue un'attività e quindi restituisce il controllo al codice chiamante. Contemporaneamente, restituisce al codice chiamante anche un valore.

Ogni volta che la routine viene chiamata, le relative istruzioni vengono eseguite a partire dalla prima istruzione eseguibile dopo l'istruzione Function e fino alla prima istruzione End Function, Exit Function o Return rilevata.

È possibile definire una routine Function in un modulo, una classe o una struttura. Per impostazione predefinita, tale routine è Public e pertanto è possibile chiamarla da qualsiasi punto dell'applicazione che disponga di accesso al modulo, alla classe o alla struttura nella quale è stata definita.

Una routine Function può accettare argomenti, come costanti, variabili o espressioni, passati a essa dal codice chiamante.

Sintassi di dichiarazione

La sintassi per dichiarare una routine Function è la seguente:

[modificatori] Function functionname[(elencoparametri)] As returntype

' Statements of the Function procedure.

End Function

Nei modificatori è possibile specificare il livello di accesso e le informazioni sull'overload, l'override, la condivisione e lo shadowing. Per ulteriori informazioni, vedere Istruzione Function (Visual Basic).

Per la dichiarazione di ciascun parametro, si segue una procedura analoga a quella usata per Routine Sub.

Tipo di dati

Ogni routine Function dispone di un tipo di dati, così come ogni variabile. Il tipo di dati è specificato dalla clausola As nell'istruzione Function e determina il tipo di dati del valore restituito dalla funzione al codice chiamante. Le dichiarazioni che seguono forniscono un esempio in proposito.

Function yesterday() As Date
End Function
Function findSqrt(ByVal radicand As Single) As Single
End Function

Per ulteriori informazioni, vedere "Parti" in Istruzione Function (Visual Basic).

Restituzione di valori

Il valore rinviato da una routine Function al codice chiamante viene denominato valore restituito. La routine restituisce il valore in uno dei seguenti modi:

  • Assegna un valore al proprio nome di funzione in una o più istruzioni della routine. Il controllo non viene restituito al programma chiamante fino a quando non viene eseguita un'istruzione Exit Function o End Function. Questa condizione è illustrata nell'esempio che segue.

    Function functionname[(elencoparametri)] As returntype

    ' The following statement does not transfer control back to the calling code.

    functionname = expression

    ' When control returns to the calling code, expression is the return value.

    End Function

  • Viene utilizzata l'istruzione Return per specificare il valore restituito, mentre il controllo viene restituito immediatamente al programma chiamante. Questa condizione è illustrata nell'esempio che segue.

    Function functionname[(elencoparametri)] As returntype

    ' The following statement immediately transfers control back to the calling code and returns the value of expression.

    Returnexpression

    End Function

Il vantaggio dell'assegnazione del valore restituito al nome di funzione è rappresentato dal fatto che il controllo non viene restituito dalla routine finché non viene rilevata un'istruzione Exit Function o End Function. È quindi possibile assegnare un valore preliminare e, se necessario, modificarlo successivamente.

Per ulteriori informazioni, vedere "Valore restituito" in Istruzione Function (Visual Basic).

Restituzione di matrici

Se la routine Function restituisce dati di tipo matrice, non è possibile accedere ai singoli elementi della matrice all'interno della funzione. Se si tenta di farlo, il compilatore interpreta l'operazione come una chiamata ricorsiva alla routine. Questa condizione è illustrata nell'esempio che segue.

Function allOnes(ByVal n As Integer) As Integer()

For i As Integer = 1 To n - 1

' The following statement generates a COMPILER ERROR.

allOnes(i) = 1

Next i

' The following statement generates a COMPILER ERROR.

Return allOnes()

End Function

Nell'esempio precedente il compilatore interpreta il tentativo di assegnazione di allOnes(i) = 1 come una chiamata a allOnes sul lato sinistro di un'istruzione di assegnazione. Interpreta il tentativo di Return allOnes() come una chiamata priva di argomenti. Entrambe le istruzioni generano errori del compilatore.

Sintassi di chiamata

Una routine Function viene chiamata includendone il nome e gli argomenti nella parte destra di un'istruzione di assegnazione o in un'espressione. È necessario specificare valori per tutti gli argomenti che non sono facoltativi e racchiudere l'elenco degli argomenti tra parentesi. Se non viene specificato alcun argomento, è anche possibile omettere le parentesi.

La sintassi per una chiamata a una routine Function è la seguente:

lvalue = functionname[(elencoargomenti)]

If ((functionname[(elencoargomenti)] / 3) <= expression) Then

Quando si chiama una routine Function, non è necessario utilizzare il relativo valore restituito. Se questo non avviene, tutte le operazioni della funzione vengono eseguite ma il valore restituito viene ignorato. MsgBox viene spesso chiamato in questo modo.

Illustrazione della dichiarazione e della chiamata

La routine Function riportata di seguito calcola il lato più lungo di un triangolo rettangolo, ovvero l'ipotenusa, dati i valori relativi agli altri due lati.

Function hypotenuse(ByVal side1 As Single, ByVal side2 As Single) As Single
    Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function

Nell'esempio che segue è illustrata una tipica chiamata a hypotenuse.

Dim testLength, testHypotenuse As Single
testHypotenuse = hypotenuse(testLength, 10.7)

Funzioni runtime di Visual Basic

Il runtime di Visual Basic consente l'esecuzione di varie funzioni, collocate nello spazio dei nomi Microsoft.VisualBasic, che includono alcune funzioni comuni come Funzione Beep, Funzione MsgBox (Visual Basic) e Funzione StrComp (Visual Basic). Queste funzioni vengono chiamate nello stesso modo delle routine Function.

Vedere anche

Attività

Procedura: creare una routine che restituisce un valore

Procedura: restituire un valore da una routine

Procedura: chiamare una routine che restituisce un valore

Concetti

Routine in Visual Basic

Routine Sub

Routine Property

Routine di operatore

Parametri e argomenti delle routine

Riferimenti

Istruzione Function (Visual Basic)