Condividi tramite


Istruzione Function (Visual Basic)

Consente di dichiarare il nome, i parametri e il codice con i quali si definisce una routine Function.

[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Function ]
    [ statements ]
End Function

Parti

Argomento

Definizione

attributelist

Facoltativo. Vedere Elenco degli attributi.

accessmodifier

Facoltativo. ad esempio uno dei seguenti:

Vedere Livelli di accesso in Visual Basic.

proceduremodifiers

Facoltativo. ad esempio uno dei seguenti:

Shared

Facoltativo. Vedere Shared.

Shadows

Facoltativo. Vedere Shadows.

name

Obbligatoria. Nome della routine. Vedere Nomi di elementi dichiarati (Visual Basic).

typeparamlist

Facoltativo. Elenco dei parametri di tipo per una routine generica. Vedere Elenco dei tipi.

parameterlist

Facoltativo. Elenco dei nomi di variabili locali che rappresentano i parametri di questa routine. Vedere Elenco dei parametri (Visual Basic).

returntype

Obbligatoria se Option Strict è On. Tipo di dati del valore restituito da questa routine.

Implements

Facoltativo. Consente di indicare che questa procedura implementa una o più routine Function, ognuna definita in un'interfaccia implementata della classe o dalla struttura contenente la routine. Vedere Istruzione Implements.

implementslist

Obbligatoria se viene fornita Implements. Elenco di routine Function implementate.

implementedprocedure [ , implementedprocedure ... ]

Ogni implementedprocedure presenta la sintassi e le parti seguenti:

interface.definedname

ParteDescrizione
interface Obbligatoria.Nome di un'interfaccia implementata dalla classe o struttura contenente questa routine.
definedname Obbligatorio.Nome mediante il quale la routine viene definita in interface.

Handles

Facoltativo. Consente di indicare che questa routine è in grado di gestire uno o più eventi specifici. Vedere Clausola Handles (Visual Basic).

eventlist

Obbligatoria se viene fornita Handles. Elenco di eventi gestiti dalla routine.

eventspecifier [ , eventspecifier ... ]

Ogni eventspecifier presenta la sintassi e le parti seguenti:

eventvariable.event

ParteDescrizione
eventvariable Obbligatoria.La variabile oggetto dichiarata con il tipo di dati della classe o della struttura che genera l'evento.
event Obbligatorio.Nome dell'evento gestito dalla routine.

statements

Facoltativo. Blocco di istruzioni da eseguire in questa routine.

End Function

Consente di terminare la definizione di questa routine.

Note

È necessario che il codice eseguibile sia inserito all'interno di una routine. Ogni procedura a sua volta viene dichiarata all'interno di una classe, una struttura o un modulo denominato classe, struttura o modulo contenente.

Utilizzare una routine Function quando è necessario restituire un valore al codice che effettua la chiamata. Utilizzare una routine Sub quando non è necessario restituire un valore.

È possibile definire una routine Function solo a livello di modulo. Il altri termini, il contesto della dichiarazione per una funzione deve essere costituito di una classe, struttura, modulo o interfaccia e non può essere un file di origine, uno spazio dei nomi, una routine o un blocco. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti (Visual Basic).

L'impostazione predefinita delle routine Function è l'accesso pubblico. È possibile modificarne i livelli di accesso mediante gli appositi modificatori.

Quando si desidera utilizzare il valore restituito dalla funzione, è possibile chiamare una routine Function a destra di un'espressione. La routine Function viene utilizzata nello stesso modo di qualsiasi funzione della libreria, ad esempio Sqrt, Cos oppure ChrW.

Per chiamare una routine Function, è necessario specificarne il nome seguito dall'elenco degli argomenti racchiuso tra parentesi, all'interno di un'espressione. Le parentesi possono essere omesse solo se non si specificano argomenti. Il codice sarà tuttavia più leggibile se si includono sempre le parentesi.

Anche l'istruzione Call consente di chiamare una funzione ma in tal caso il valore restituito verrà ignorato.

Nota

È possibile utilizzare espressioni lambda, per definire espressioni di funzioni in riga. Per ulteriori informazioni, vedere Espressione di funzione (Visual Basic) e Espressioni lambda (Visual Basic).

Regole

  • Tipo restituito. L'istruzione Function può dichiarare il tipo di dati del valore che restituisce. È possibile specificare qualsiasi tipo di dati o il nome di un'enumerazione, struttura, classe o interfaccia.

    Se non si specifica la parte returntype, la procedura restituirà il valore Object.

  • Implementazione. Se questa procedura utilizza la parola chiave Implements, la classe o la struttura contenente deve avere anche un'istruzione Implements immediatamente dopo la sua istruzione Class o Structure. Nell'istruzione Implements deve essere compresa ogni interfaccia specificata in implementslist. Il nome tramite il quale un'interfaccia definisce la Function tuttavia (in definedname) non deve essere uguale al nome della sua routine (in name).

Comportamento

  • Chiusura di una routine. Quando la routine Function chiude il codice che effettua la chiamata, l'esecuzione continua con l'istruzione che segue l'istruzione che l'ha chiamata.

    Le istruzioni Exit Function e Return provocano un'uscita immediata da una routine Function. Qualsiasi numero delle istruzioni Exit Function e Return può essere visualizzato in un punto qualsiasi della procedura ed è possibile mescolare le istruzioni Exit Function e Return.

  • Valore restituito. Per ottenere un valore da una funzione, è possibile assegnare il valore al nome di funzione oppure includerlo in un'istruzione Return. Nell'esempio seguente il valore restituito viene assegnato al nome di funzione myFunction e viene quindi utilizzata l'istruzione Exit Function per la restituzione.

    Function myFunction(ByVal j As Integer) As Double
        myFunction = 3.87 * j
        Exit Function
    End Function
    

    Se si utilizza Exit Function senza assegnare un valore a name, la procedura restituisce il valore predefinito per il tipo di dati specificato in returntype. Se returntype non viene specificato, la procedura restituisce Nothing, il valore predefinito per Object.

    L'istruzione Return assegna simultaneamente il valore di restituzione e chiude la funzione. Questa operazione viene illustrata nell'esempio che segue.

    Function myFunction(ByVal j As Integer) As Double
        Return 3.87 * j
    End Function
    

Risoluzione dei problemi

  • Ordine di esecuzione.  In Visual Basic le espressioni aritmetiche vengono a volte riorganizzate per migliorare il grado di efficienza interno. Si consiglia quindi di evitare l'utilizzo di una routine Function in un'espressione aritmetica se la funzione modifica il valore di variabili nella stessa espressione.

Esempio

Nell'esempio illustrato di seguito l'istruzione Function viene utilizzata per dichiarare il nome, i parametri e il codice che formano il corpo di una routine Function. Il modificatore ParamArray consente alla funzione di accettare un numero variabile di argomenti.

Public Function calcSum(ByVal ParamArray args() As Double) As Double
    calcSum = 0
    If args.Length <= 0 Then Exit Function
    For i As Integer = 0 To UBound(args, 1)
        calcSum += args(i)
    Next i
End Function

Nell'esempio illustrato di seguito viene invocata la funzione dichiarata nell'esempio precedente.

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables 
        ' are assigned the following values: args(0) = 4, args(1) = 3, 
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum 
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    Public Function calcSum(ByVal ParamArray args() As Double) As Double
        calcSum = 0
        If args.Length <= 0 Then Exit Function
        For i As Integer = 0 To UBound(args, 1)
            calcSum += args(i)
        Next i
    End Function

End Module

Vedere anche

Attività

Procedura: utilizzare una classe generica (Visual Basic)

Risoluzione dei problemi relativi alle routine (Visual Basic)

Riferimenti

Istruzione Sub (Visual Basic)

Elenco dei parametri (Visual Basic)

Istruzione Dim (Visual Basic)

Istruzione Call (Visual Basic)

Clausola Of (Visual Basic)

Espressione di funzione (Visual Basic)

Concetti

Matrici di parametri (Visual Basic)

Espressioni lambda (Visual Basic)