Expression de fonction

Mise à jour : novembre 2007

Déclare les paramètres et le code qui définissent une expression lambda.

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

Éléments

  • parameterlist
    Facultatif. Liste des noms de variables locales représentant les paramètres de cette procédure. Les parenthèses doivent être présentes même quand la liste est vide. Consultez Liste de paramètres.

  • expression
    Requis. Une expression unique. La valeur de l'expression détermine le type de la fonction et la valeur retournée lors de l'appel de la fonction.

Notes

Une expression lambda est une fonction sans nom qui calcule et retourne une valeur unique. Vous pouvez utiliser une expression lambda partout où vous pouvez utiliser un type délégué, sauf en tant qu'argument à RemoveHandler. Pour plus d'informations sur les délégués et l'utilisation d'expressions lambda avec les délégués, consultez Delegate, instruction et Conversion simplifiée des délégués.

Syntaxe d'expression lambda

La syntaxe d'une expression lambda ressemble à celle d'une fonction standard. Les différences sont les suivantes :

  • Une expression lambda n'a pas de nom.

  • Les expressions lambda ne peuvent pas avoir modificateurs, tels que Overloads ou Overrides.

  • Les expressions lambda n'utilisent pas de clause As pour désigner le type de retour de la fonction. À la place, le type est déduit de la valeur que le corps de l'expression lambda prend. Par exemple, si le corps de l'expression lambda est Where cust.City = "London", son type de retour est Boolean.

  • Le corps de la fonction doit être une expression, pas une instruction. Le corps peut se composer d'un appel à une procédure de fonction, mais pas d'un appel à une sous-procédure.

  • Il n'existe aucune instruction Return. La valeur retournée par la fonction est celle de l'expression du corps de la fonction.

  • Il n'existe aucune instruction End Function.

  • Tous les paramètres doivent posséder des types de données spécifiés ou être tous déduits.

  • Les paramètres facultatifs et Paramarray ne sont pas autorisés.

  • Les paramètres génériques ne sont pas autorisés.

En raison de ces restrictions et des façons dont les expressions lambda sont utilisées, ils sont habituellement courts et peu complexes.

Exemple

Les exemples suivants illustrent deux façons de créer des expressions lambda simples. La première utilise un Dim pour fournir un nom pour la fonction. Pour appeler la fonction, envoyez une valeur pour le paramètre.

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

Vous pouvez également déclarer et exécuter simultanément la fonction.

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

Les expressions lambda sont à la base d'un grand nombre d'opérateurs de requête dans LINQ (Language Integrated Query)et peuvent être utilisées explicitement dans les requêtes basées sur une méthode. L'exemple suivant montre une requête LINQ typique, suivie de la traduction de la requête au format de la méthode.

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)

Pour plus d'informations sur les méthodes de requête, consultez Requêtes (Visual Basic). Pour plus d'informations sur les opérateurs de requête standard, consultez Vue d'ensemble des opérateurs de requête standard.

Voir aussi

Concepts

Expressions lambda

Opérateurs et expressions en Visual Basic

Vue d'ensemble des instructions

Comparaisons de valeurs

Expressions booléennes

Conversion simplifiée des délégués

Référence

Function, instruction (Visual Basic)

If, opérateur