Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Une expression lambda est une fonction ou une sous-routine qui n’a pas de nom. Une expression lambda peut être utilisée partout où un type délégué est valide.
Pour créer une fonction d’expression lambda à ligne unique
Dans n’importe quel cas où un type délégué peut être utilisé, tapez le mot clé
Function, comme dans l’exemple suivant :Dim add1 =FunctionEntre parenthèses, directement après
Function, tapez les paramètres de la fonction. Notez que vous ne spécifiez pas de nom aprèsFunction.Dim add1 = Function(num As Integer)Après la liste des paramètres, tapez une expression unique comme corps de la fonction. La valeur que l’expression évalue est la valeur retournée par la fonction. Vous n’utilisez pas de
Asclause pour spécifier le type de retour.Dim add1 = Function(num As Integer) num + 1Vous appelez l’expression lambda en passant un argument entier.
' The following line prints 6. Console.WriteLine(add1(5))Vous pouvez également obtenir le même résultat par l’exemple suivant :
Console.WriteLine((Function(num As Integer) num + 1)(5))
Pour créer une sous-routine d’expression lambda à ligne unique
Dans n’importe quel cas où un type délégué peut être utilisé, tapez le mot clé
Sub, comme illustré dans l’exemple suivant.Dim add1 =SubEntre parenthèses, directement après
Sub, tapez les paramètres de la sous-routine. Notez que vous ne spécifiez pas de nom aprèsSub.Dim add1 = Sub(msg As String)Après la liste des paramètres, tapez une instruction unique comme corps de la sous-routine.
Dim writeMessage = Sub(msg As String) Console.WriteLine(msg)Vous appelez l’expression lambda en passant un argument de type chaîne
' The following line prints "Hello". writeMessage("Hello")
Pour créer une fonction d’expression lambda multiligne
Dans n’importe quel cas où un type délégué peut être utilisé, tapez le mot clé
Function, comme illustré dans l’exemple suivant.Dim add1 =FunctionEntre parenthèses, directement après
Function, tapez les paramètres de la fonction. Notez que vous ne spécifiez pas de nom aprèsFunction.Dim add1 = Function(index As Integer)Appuyez sur Entrée. L’instruction
End Functionest automatiquement ajoutée.Dans le corps de la fonction, ajoutez le code suivant pour créer une expression et renvoyer la valeur. Vous n’utilisez pas de
Asclause pour spécifier le type de retour.Dim getSortColumn = Function(index As Integer) Select Case index Case 0 Return "FirstName" Case 1 Return "LastName" Case 2 Return "CompanyName" Case Else Return "LastName" End Select End FunctionVous appelez l’expression lambda en passant un argument entier.
Dim sortColumn = getSortColumn(0)
Pour créer une sous-routine d’expression lambda multiligne
Dans n’importe quel cas où un type délégué peut être utilisé, tapez le mot clé
Sub, comme illustré dans l’exemple suivant :Dim add1 =SubEntre parenthèses, directement après
Sub, tapez les paramètres de la sous-routine. Notez que vous ne spécifiez pas de nom aprèsSub.Dim add1 = Sub(msg As String)Appuyez sur Entrée. L’instruction
End Subest automatiquement ajoutée.Dans le corps de la fonction, ajoutez le code suivant à exécuter lorsque la sous-routine est appelée.
Dim writeToLog = Sub(msg As String) Dim log As New EventLog() log.Source = "Application" log.WriteEntry(msg) log.Close() End SubVous appelez l’expression lambda en passant un argument de type chaîne
writeToLog("Application started.")
Exemple :
Une utilisation courante des expressions lambda consiste à définir une fonction qui peut être passée en tant qu’argument pour un paramètre dont le type est Delegate. Dans l’exemple suivant, la GetProcesses méthode retourne un tableau des processus en cours d’exécution sur l’ordinateur local. La Where méthode de la Enumerable classe nécessite un Boolean délégué comme argument. L’expression lambda dans l’exemple est utilisée à cet effet. Elle retourne True pour chaque processus qui n’a qu’un seul thread, et ceux-ci sont sélectionnés dans filteredList.
Sub Main()
' Create an array of running processes.
Dim procList As Process() = Diagnostics.Process.GetProcesses
' Return the processes that have one thread. Notice that the type
' of the parameter does not have to be explicitly stated.
Dim filteredList = procList.Where(Function(p) p.Threads.Count = 1)
' Display the name of each selected process.
For Each proc In filteredList
MsgBox(proc.ProcessName)
Next
End Sub
L’exemple précédent équivaut au code suivant, qui est écrit en syntaxe de requête Language-Integrated (LINQ) :
Sub Main()
Dim filteredQuery = From proc In Diagnostics.Process.GetProcesses
Where proc.Threads.Count = 1
Select proc
For Each proc In filteredQuery
MsgBox(proc.ProcessName)
Next
End Sub