Share via


Espressione di funzione

Aggiornamento: novembre 2007

Dichiara i parametri e il codice che consentono di definire un'espresssione lambda.

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] ) _
    expression

Parti

  • parameterlist
    Facoltativa. Elenco dei nomi di variabili locali che rappresentano i parametri di questa routine. Le parentesi devono anche essere presenti quando l'elenco è vuoto. Vedere Elenco parametri.

  • expression
    Obbligatorio. Espressione singola. Il valore dell'espressione determina il tipo di funzione e il valore restituito quando viene chiamata la funzione.

Note

Una espressione lambda è una funzione senza nome, che calcola e restituisce un singolo valore. Un'espressione lambda può essere utilizzata ovunque sia previsto un tipo delegato, tranne come un argomento dell'oggetto RemoveHandler. Per ulteriori informazioni sui delegati e sull'utilizzo delle espressioni lambda con i delegati, vedere Istruzione Delegate e Conversione di tipo relaxed del delegato.

Sintassi delle espressioni lambda

La sintassi di un'espressione lambda è simile a quella di una funzione standard. Le differenze sono le seguenti.

  • Un'espressione lambda non possiede un nome.

  • Le espressioni lambda non possono avere modificatori, ad esempio Overloads o Overrides.

  • Le espressioni lambda non utilizzano una clausola As per definire il tipo restituito della funzione. Invece, il tipo viene dedotto dal valore calcolato dal corpo dell'espressione lambda . Ad esempio, se il corpo dell'espressione lambda è Where cust.City = "London", il relativo tipo restituito è Boolean.

  • Il corpo della funzione deve essere un'espressione, non un'istruzione. Il corpo può essere costituito da una chiamata a una routine di funzione, ma non da una chiamata a una subroutine.

  • Non è presente l'istruzione Return. Il valore restituito dalla funzione è il valore dell'espressione nel corpo della funzione.

  • Non è presente l'istruzione End Function.

  • Tutti i parametri devono avere tipi di dati specificati oppure tutti devono essere dedotti.

  • Non sono permessi parametri Optional e Paramarray .

  • Non sono permessi parametri generici.

Come conseguenza di queste restrizioni e della modalità in cui le espressioni lambda vengono utilizzate, di solito sono corte e non complicate.

Esempio

Negli esempi seguenti vengono illustrati due modi per creare espressioni lambda semplici. Nel primo caso viene utilizzato un oggetto Dim per fornire un nome alla funzione. Per chiamare la funzione, inviare un valore per il parametro.

Dim add1 = Function(num As Integer) num + 1
' The following line prints 6.
Console.WriteLine(add1(5))

In alternativa, è possibile dichiarare ed eseguire contemporaneamente la funzione.

Console.WriteLine((Function(num As Integer) num + 1)(5))

Molti degli operatori di query standard hanno espressioni lambda sottostanti in LINQ (Language-Integrated Query) che possono essere utilizzate in modo esplicito nelle query basate su metodo. Nell'esempio seguente viene mostrata una query LINQ tipica, seguita dalla conversione della query nel formato del metodo.

Dim londonCusts = From cust In db.Customers 
                  Where cust.City = "London" 
                  Select cust

' This query is compiled to the following code:
Dim londonCusts = db.Customers _
    .Where(Function(cust) cust.City = "London") _
    .Select(Function(cust) cust)

Per ulteriori informazioni sui metodi di query, vedere Query (Visual Basic). Per ulteriori informazioni sugli operatori di query standard, vedere Cenni preliminari sugli operatori di query standard.

Vedere anche

Concetti

Espressioni lambda

Operatori ed espressioni in Visual Basic

Cenni preliminari sulle istruzioni

Confronto di valori

Espressioni booleane

Conversione di tipo relaxed del delegato

Riferimenti

Istruzione Function (Visual Basic)

Operatore If