Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Sub, instruction (Visual Basic)

Déclare le nom, les paramètres et le code qui définissent une procédure Sub.

[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] [ Async ]
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Sub ]
    [ statements ]
End Sub

Terme

Définition

attributelist

Optionnel. Consultez Liste d'attributs.

Partial

Optionnel. Indique la définition d'une méthode partielle. Consultez Méthodes partielles (Visual Basic).

accessmodifier

Optionnel. Il peut s'agir de l'une des valeurs suivantes :

Consultez Niveaux d'accès dans Visual Basic.

proceduremodifiers

Optionnel. Il peut s'agir de l'une des valeurs suivantes :

Shared

Optionnel. Consultez Shared.

Shadows

Optionnel. Consultez Shadows.

Async

Optionnel. Consultez Async.

name

Requis. Nom de la procédure. Consultez Noms d'éléments déclarés (Visual Basic). Pour créer une procédure de constructeur pour une classe, affectez au nom d'une procédure Sub le mot clé New. Pour plus d’informations, consultez Durée de vie d'un objet : création et destruction des objets (Visual Basic).

typeparamlist

Optionnel. Liste des paramètres de type pour une procédure générique. Consultez Liste de types.

parameterlist

Optionnel. Liste des noms de variables locales représentant les paramètres de cette procédure. Consultez Liste de paramètres (Visual Basic).

Implements

Optionnel. Indique que cette procédure implémente une ou plusieurs procédures Sub, chacune étant définie dans une interface implémentée par la classe ou la structure conteneur de cette procédure. Consultez l'instruction Implements (Implements, instruction).

implementslist

Requis si Implements est fourni. Liste des procédures Sub implémentées.

implementedprocedure [ , implementedprocedure ... ]

Chaque implementedprocedure emploie la syntaxe et les paramètres suivants :

interface.definedname

Élément Description
interface Requis. Nom d'une interface implémentée par la classe ou la structure conteneur de cette procédure.
definedname Requis. Nom par lequel la procédure est définie dans interface.

Handles

Optionnel. Indique que cette procédure peut gérer un ou plusieurs événements spécifiques. Consultez Handles, clause (Visual Basic).

eventlist

Requis si Handles est fourni. Liste des événements gérés par cette procédure.

eventspecifier [ , eventspecifier ... ]

Chaque eventspecifier emploie la syntaxe et les éléments suivants :

eventvariable.event

Élément Description
eventvariable Requis. Variable objet déclarée avec le type de données de la classe ou de la structure qui déclenche l'événement.
event Requis. Nom de l'événement géré par cette procédure.

statements

Optionnel. Bloc d'instructions à exécuter dans cette procédure.

End Sub

Met fin à la définition de cette procédure.

Tout le code exécutable doit se trouver à l'intérieur d'une procédure. Utilisez une procédure d' Sub lorsque vous ne souhaitez pas retourner une valeur au code appelant. Utilisez une procédure Function lorsque vous souhaitez retourner une valeur.

Définir une procédure sub

Vous pouvez définir une procédure d' Sub uniquement au niveau de le module. Le contexte de déclaration d'une procédure sub, par conséquent, doit être une classe, une structure, un module, ou une interface et ne peut pas être un fichier source, espace de noms, une procédure, ou un bloc. Pour plus d’informations, consultez Contextes de déclaration et niveaux d'accès par défaut (Visual Basic).

Les procédures Sub disposent par défaut d'un accès public. Vous pouvez ajuster leurs niveaux d'accès en utilisant les modificateurs d'accès.

Si la procédure utilise le mot clé Implements, la classe conteneur ou la structure doit avoir une instruction Implements qui suit immédiatement l'instruction Class ou Structure. L'instruction Implements doit inclure chaque interface qui est spécifiée dans implementslist. Toutefois, le nom selon lequel une interface définit Sub (dans definedname) ne doit pas correspondre au nom de cette procédure (dans name).

Le retour d'une procédure sub

Quand une procédure Sub retourne au code appelant, l'exécution continue avec l'instruction après l'instruction qui l'a appelée.

L'exemple suivant affiche un retour d'une procédure Sub.

Sub mySub(ByVal q As String)
    Return
End Sub 

Les instructions Exit Sub et Return provoquent la sortie immédiate d'une procédure Sub. Plusieurs instructions Exit Sub et Return peuvent apparaître n'importe où dans la procédure, et vous pouvez associer des instructions Exit Sub et Return.

Appeler une procédure sub

Vous appelez une procédure Sub à l'aide du nom de la procédure dans une instruction puis en suivant ce nom avec sa liste d'arguments entre parenthèses. Vous pouvez mettre les parenthèses uniquement si vous ne fournissez pas d'arguments. Toutefois, votre code est plus lisible si vous incluez toujours les parenthèses.

Les procédures Sub et Function peuvent avoir des paramètres et exécuter une série d'instructions. Toutefois, la procédure Function retourne une valeur contrairement à une procédure Sub qui ne retourne pas de valeur. Par conséquent, vous ne pouvez pas utiliser une procédure d' Sub dans une expression.

Vous pouvez utiliser le mot clé Call lorsque vous appelez une procédure Sub, mais ce mot clé n'est pas recommandé pour la plupart des fonctionnalités. Pour plus d’informations, consultez Call, instruction (Visual Basic).

Visual Basic réorganise quelquefois les expressions arithmétiques de manière à optimiser l'efficacité interne. Pour cette raison, si votre liste d'arguments inclut les expressions qui appellent d'autres procédures, vous ne devez pas supposer que ces expressions sont appelées dans un ordre particulier.

Procédures Async Sub

À l'aide de la fonctionnalité Async, vous pouvez appeler des fonctions asynchrones sans utiliser des rappels explicites ou fractionner manuellement votre code entre des fonctions ou des expressions lambda multiples.

Si vous marquez une procédure avec le modificateur Async , vous pouvez utiliser l'opérateur Await (attendez) dans la procédure. Lorsque le contrôle atteint une expression Await dans la procédure Async, le contrôle retourne à l'appelant, et la progression de la procédure est interrompue jusqu'à ce que la tâche attendue se termine. Lorsque la tâche est terminée, l'opération peut continuer dans la procédure.

Remarque Remarque

Une procédure Async retourne vers l'appelant lorsque l'un ou l'autre que l'objet d'abord attendu qui n'est pas encore complet est produit ou la fin de la procédure Async est atteint, ce qui se produit en premier.

Vous pouvez également marquer l'instruction Function (Function, instruction (Visual Basic)) avec le modificateur Async . Une fonction Async peut avoir un type de retour Task<TResult> ou Task. Un exemple plus loin dans cette rubrique illustre une fonction Async dont le type de retour Task<TResult>.

Les procédures AsyncSub sont principalement utilisées pour les gestionnaires d'événements, où une valeur ne peut pas être retournée. Une procédure AsyncSub ne peut pas être attendue, et l'appel d'une procédure AsyncSub ne peut pas intercepter des exceptions que la procédure Sub lève.

Une procédure Async ne peut déclarer des paramètres ByRef.

Pour plus d'informations sur les procédures Async, consultez Programmation asynchrone avec Async et Await (C# et Visual Basic), Flux de contrôle dans les programmes Async (C# et Visual Basic) et Types de retour Async (C# et Visual Basic).

L'exemple suivant utilise l'instruction Sub pour définir le nom, les paramètres et le code qui forment le corps d'une procédure Sub.


Sub computeArea(ByVal length As Double, ByVal width As Double)
    ' Declare local variable.
    Dim area As Double
    If length = 0 Or width = 0 Then
        ' If either argument = 0 then exit Sub immediately.
        Exit Sub
    End If
    ' Calculate area of rectangle.
    area = length * width
    ' Print area to Immediate window.
    Debug.WriteLine(area)
End Sub


Dans l'exemple suivant, DelayAsync est une AsyncFunction dont le type de retour est Task<TResult>. DelayAsync a une instruction Return qui retourne un entier. Par conséquent, la déclaration de fonction DelayAsync doit avoir un type de retour Task(Of Integer). Étant donné que le type de retour est Task(Of Integer), l'évaluation de l'expression Await dans DoSomethingAsync produit un entier, comme le montre l'instruction suivante : Dim result As Integer = Await delayTask.

La procédure startButton_Click est un exemple de procédure Async Sub. Étant donné que DoSomethingAsync est une fonction Async, la tâche de l'appel à DoSomethingAsync doit être attendue, comme dans l'instruction suivante : Await DoSomethingAsync(). La procédure Sub startButton_Click doit être définie avec le modificateur Async car elle a une expression Await .


' Imports System.Diagnostics
' Imports System.Threading.Tasks

' This Click event is marked with the Async modifier.
Private Async Sub startButton_Click(sender As Object, e As RoutedEventArgs) Handles startButton.Click
    Await DoSomethingAsync()
End Sub

Private Async Function DoSomethingAsync() As Task
    Dim delayTask As Task(Of Integer) = DelayAsync()
    Dim result As Integer = Await delayTask

    ' The previous two statements may be combined into
    ' the following statement.
    ' Dim result As Integer = Await DelayAsync()

    Debug.WriteLine("Result: " & result)
End Function

Private Async Function DelayAsync() As Task(Of Integer)
    Await Task.Delay(100)
    Return 5
End Function

'  Output:
'   Result: 5


Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft