Expression de fonction (Visual Basic)

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

Syntaxe

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

Éléments

Terme Définition
parameterlist Optionnel. Liste des noms de variables locales qui représentent les paramètres de cette procédure. Les parenthèses doivent être présentes même lorsque la liste est vide. Consultez Liste des paramètres.
expression Obligatoire. Expression unique. Le type de l’expression est le type de retour de la fonction.
statements Obligatoire. Liste d’instructions qui retournent une valeur à l’aide de l’instruction Return. (Voir Instruction Return.) Le type de la valeur retournée est le type de retour de la fonction.

Notes

Une expression lambda est une fonction sans nom qui calcule et retourne une valeur. Vous pouvez utiliser une expression lambda partout où vous pouvez utiliser un type délégué, à l’exception d’un argument à RemoveHandler. Pour plus d’informations sur les délégués et l’utilisation d’expressions lambda avec des délégués, consultez Instruction Delegate et Conversion Delegate détendue.

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 de 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. Au lieu de cela, le type est déduit de la valeur dans laquelle le corps d’une expression lambda à une seule ligne est évalué, ou la valeur de retour d’une expression lambda multiligne. Par exemple, si le corps d’une expression lambda à ligne unique est Where cust.City = "London", son type de retour est Boolean.

  • Le corps d’une expression lambda à une seule ligne doit être une expression, et non une instruction. Le corps peut se composer d’un appel à une procédure de fonction, mais pas d’un appel à une sous-procédure.

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

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

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

Exemple 1

Les exemples suivants montrent 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, vous envoyez une valeur pour le paramètre.

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

Exemple 2

Vous pouvez également déclarer et exécuter la fonction en même temps.

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

Exemple 3

Voici un exemple d’expression lambda qui incrémente son argument et retourne la valeur. L’exemple montre à la fois la syntaxe d’expression lambda à ligne unique et multiligne pour une fonction. Pour plus d’exemples, consultez Expressions lambda.

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

Exemple 4

Les expressions lambda sous-tendent 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 des méthodes. L’exemple suivant montre une requête LINQ classique, suivie de la traduction de la requête au format de 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. Pour plus d’informations sur les opérateurs de requête standard, consultez Présentation des opérateurs de requête standard.

Voir aussi