Espressione di funzione (Visual Basic)

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

Function ( [ parameterlist ] ) expression
- or -
Function ( [ parameterlist ] )
  [ statements ]
End Function

Parti

Argomento

Definizione

parameterlist

Facoltativo. 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 dei parametri (Visual Basic).

expression

Obbligatoria. Espressione singola. Il tipo dell'espressione è il tipo restituito della funzione.

statements

Obbligatoria. Elenco di istruzioni che consente di restituire un valore tramite l'istruzione Return. Per ulteriori informazioni, vedere Istruzione Return (Visual Basic). Il tipo del valore restituito è il tipo restituito della funzione.

Note

Un'espressione lambda è una funzione senza nome tramite cui viene calcolato e restituito un 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 (Visual Basic).

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. Il tipo viene invece dedotto dal valore restituito dal corpo di un'espressione lambda a riga singola o dal valore restituito di un'espressione lambda su più righe. Ad esempio, se il corpo di un'espressione lambda a riga singola è Where cust.City = "London", il relativo tipo restituito è Boolean.

  • Il corpo di un'espressione lambda a riga singola 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.

  • 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.

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))

Nell'esempio seguente viene illustrata un'espressione lambda tramite la quale viene incrementato l'argomento e restituito il valore. Nell'esempio viene illustrata la sintassi delle espressioni lambda sia a riga singola che con più righe per una funzione. Per ulteriori esempi, vedere Espressioni lambda (Visual Basic).

Dim increment1 = Function(x) x + 1
Dim increment2 = Function(x)
                     Return x + 2
                 End Function

' Write the value 2.
Console.WriteLine(increment1(1))

' Write the value 4.
Console.WriteLine(increment2(2))

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

Riferimenti

Istruzione Function (Visual Basic)

Operatore If (Visual Basic)

Concetti

Espressioni lambda (Visual Basic)

Operatori ed espressioni in Visual Basic

Confronto di valori (Visual Basic)

Espressioni booleane (Visual Basic)

Conversione di tipo relaxed del delegato (Visual Basic)

Altre risorse

Istruzioni in Visual Basic