Routine Function (Visual Basic)
Una routine Function
è una serie di istruzioni di Visual Basic racchiuse tra le istruzioni Function
e End Function
. La routine Function
esegue un'attività e quindi restituisce il controllo al codice chiamante. Quando restituisce il controllo, restituisce anche un valore al codice chiamante.
Ogni volta che viene chiamata la routine, vengono eseguite le relative istruzioni, a partire dalla prima istruzione eseguibile dopo l'istruzione Function
e terminando con la 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, è Public
, ed è quindi possibile chiamarla da qualsiasi posizione dell'applicazione che abbia accesso al modulo, alla classe o alla struttura in cui è stata definita.
Una routine Function
può accettare argomenti, ad esempio costanti, variabili o espressioni, che vengono passati dal codice chiamante.
Sintassi di dichiarazione
La sintassi per dichiarare una routine Function
è la seguente:
[Modifiers] Function FunctionName [(ParameterList)] As ReturnType
[Statements]
End Function
I modificatori possono specificare il livello di accesso e le informazioni sull'overload, l'override, la condivisione e lo shadowing. Per altre informazioni, vedere Istruzione Function.
Ogni parametro viene dichiarato nello stesso modo in cui viene dichiarato per le routine Sub.
Tipo di dati
Ogni routine Function
ha un tipo di dati, esattamente come ogni variabile. Questo tipo di dati viene specificato dalla clausola As
nell'istruzione Function
e determina il tipo di dati del valore restituito dalla funzione al codice chiamante. Le dichiarazioni di esempio seguenti illustrano questo concetto.
Function Yesterday() As Date
End Function
Function FindSqrt(radicand As Single) As Single
End Function
Per altre informazioni, vedere "Componenti"in Istruzione Function.
Restituzione di valori
Il valore che una routine Function
restituisce al codice chiamante viene denominato valore restituito. La routine restituisce questo valore in uno dei due modi seguenti:
Usa l'istruzione
Return
per specificare il valore restituito e restituisce immediatamente il controllo al programma chiamante. Ciò è illustrato nell'esempio seguente.Function FunctionName [(ParameterList)] As ReturnType ' The following statement immediately transfers control back ' to the calling code and returns the value of Expression. Return Expression End Function
Assegna un valore al proprio nome di funzione in una o più istruzioni della routine. Il controllo non viene restituito al programma chiamante finché non viene eseguita un'istruzione
Exit Function
oEnd Function
. Ciò è illustrato nell'esempio seguente.Function FunctionName [(ParameterList)] 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
Il vantaggio di assegnare il valore restituito al nome della funzione è che il controllo non viene restituito dalla routine fino a quando non rileva un'istruzione Exit Function
o End Function
. In questo modo è possibile assegnare un valore preliminare e modificarlo in un secondo momento, se necessario.
Per altre informazioni sulla restituzione dei valori, vedere Istruzione Function. Per altre informazioni sulla restituzione di matrici, vedere Matrici.
Sintassi di chiamata
Per richiamare una routine Function
, includerne il nome e gli argomenti sul lato destro di un'istruzione di assegnazione o in un'espressione. È necessario specificare i valori per tutti gli argomenti che non sono facoltativi ed è necessario racchiudere l'elenco degli argomenti tra parentesi. Se non vengono specificati argomenti, è possibile omettere facoltativamente le parentesi.
La sintassi per una chiamata a una routine Function
è la seguente:
lvalue =
functionname [(
argumentlist )]
If ((
functionname [(
argumentlist )] / 3) <=
expression ) Then
Quando si chiama una routine Function
, non è necessario usare il relativo valore restituito. In caso contrario, vengono eseguite tutte le azioni della funzione, ma il valore restituito viene ignorato. MsgBox viene spesso chiamato in questo modo.
Illustrazione della dichiarazione e della chiamata
La routine Function
seguente calcola il lato più lungo, o ipotenusa, di un triangolo rettangolo, in base ai valori degli altri due lati.
Function Hypotenuse(side1 As Double, side2 As Double) As Double
Return Math.Sqrt((side1 ^ 2) + (side2 ^ 2))
End Function
Nell'esempio seguente viene illustrata una chiamata tipica a hypotenuse
.
Dim testLength, testHypotenuse As Double
testHypotenuse = Hypotenuse(testLength, 10.7)