Function, instruction (Visual Basic)

Mise à jour : novembre 2007

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

Remarque :

Visual Basic 2008 introduit des expressions lambda, qui vous permettent de définir des expressions de fonctions en ligne. Pour plus d'informations, consultez Expression de fonction et Expressions lambda.

[ <attributelist> ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Function name [ (Of typeparamlist) ] [ (parameterlist) ] [ As returntype ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Function ]
    [ statements ]
End Function

Éléments

  • attributelist
    Facultatif. Consultez Liste d'attributs.

  • accessmodifier
    Facultatif. Il peut s'agir de l'une des valeurs suivantes :

    Consultez Niveaux d'accès dans Visual Basic.

  • proceduremodifiers
    Facultatif. Il peut s'agir de l'une des valeurs suivantes :

  • Shared
    Facultatif. Consultez Shared.

  • Shadows
    Facultatif. Consultez Shadows.

  • name
    Obligatoire. Nom de la procédure. Consultez Noms d'éléments déclarés.

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

  • parameterlist
    Facultatif. Liste des noms de variables locales représentant les paramètres de cette procédure. Consultez à Liste de paramètres.

  • returntype
    Requis si Option Strict a la valeur On. Type de données de la valeur retournée par cette procédure.

  • Implements
    Facultatif. Indique que cette procédure implémente une ou plusieurs procédures Function, chacune étant définie dans une interface implémentée par la classe ou la structure conteneur de cette procédure. Consultez Implements, instruction.

  • implementslist
    Requis si Implements est fourni. Liste des procédures Function implémentées.

    implementedprocedure [ , implementedprocedure ... ]

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

    interface.definedname

    Élément

    Description

    interface

    Obligatoire. Nom d'une interface implémentée par la classe ou la structure conteneur de cette procédure.

    definedname

    Obligatoire. Nom par lequel la procédure est définie dans interface.

  • Handles
    Facultatif. Indique que cette procédure peut gérer un ou plusieurs événements spécifiques. Consultez Handles.

  • 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

    Obligatoire. Variable objet déclarée avec le type de données de la classe ou la structure qui déclenche l'événement.

    event

    Obligatoire. Nom de l'événement géré par cette procédure.

  • statements
    Facultatif. Bloc d'instructions à exécuter à l'intérieur de cette procédure.

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

Notes

Tout le code exécutable doit se trouver à l'intérieur d'une procédure. Chaque procédure, à son tour, est déclarée dans une classe, structure ou module appelé la classe, structure ou module conteneur.

Utilisez une procédure Function lorsque vous devez retourner une valeur au code appelant. Utilisez une procédure Sub si aucune valeur ne doit être retournée.

Vous ne pouvez définir une procédure Function qu'au niveau du module. Cela signifie que le contexte de déclaration pour une fonction doit être une classe, une structure, un module ou une interface, et ne peut pas être un fichier source, un 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.

Les procédures Function disposent par défaut d'un accès public. Vous pouvez régler leurs niveaux d'accès avec les modificateurs d'accès.

Vous pouvez appeler une procédure Function du côté droit d'une expression lorsque vous voulez utiliser la valeur retournée par la fonction. Vous utilisez la procédure Function de la même façon que n'importe quelle fonction de bibliothèque telle que Sqrt, Cos ou ChrW.

Vous appelez une procédure Function en utilisant le nom de procédure, suivi de la liste d'arguments entre parenthèses, dans une expression. Vous pouvez omettre les parenthèses seulement si vous n'indiquez aucun argument. Toutefois, votre code est plus lisible si vous incluez toujours les parenthèses.

Une fonction peut également être appelée à l'aide de l'instruction Call. Dans ce cas, la valeur de retour est ignorée.

Règles

  • Type de retour. L'instruction Function peut déclarer le type de données de la valeur qu'elle retourne. Vous pouvez spécifier un type de données ou le nom d'une énumération, d'une structure, d'une classe ou d'une interface.

    Si vous ne spécifiez pas returntype, la procédure retourne Object.

  • Implémentation. Si cette procédure utilise le mot clé Implements, la classe ou la structure conteneur doit également contenir une instruction Implements qui suit immédiatement son instruction Class ou Structure. L'instruction Implements doit inclure chaque interface spécifiée dans implementslist. Toutefois, le nom par lequel une interface définit Function (dans definedname) ne doit pas être identique au nom de cette procédure (dans name).

Comportement

  • Retour d'une procédure. Lorsque la procédure Function retourne au code appelant, l'exécution se poursuit avec l'instruction qui suit celle qui l'a appelé.

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

  • Valeur de retour. Pour retourner une valeur à partir d'une fonction, vous pouvez soit assigner la valeur au nom de fonction, soit l'inclure dans une instruction Return. L'exemple suivant assigne la valeur de retour au nom de la fonction myFunction, puis utilise l'instruction Exit Function pour retourner :

    Function myFunction(ByVal j As Integer) As Double
        myFunction = 3.87 * j
        Exit Function
    End Function
    

    Si vous utilisez Exit Function sans assigner de valeur à name, la procédure retourne la valeur par défaut pour le type de données spécifié dans returntype. Si returntype n'est pas spécifié, la procédure retourne Nothing, la valeur par défaut pour Object.

    L'instruction Return assigne la valeur de retour et ferme la fonction simultanément. L'exemple suivant fournit une illustration.

    Function myFunction(ByVal j As Integer) As Double
        Return 3.87 * j
    End Function
    

Dépannage

  • Ordre d'exécution. Visual Basic réorganise quelquefois les expressions arithmétiques de manière à optimiser l'efficacité interne. C'est pourquoi vous devez éviter d'utiliser une procédure Function dans une expression arithmétique quand la fonction change la valeur des variables dans la même expression.

Exemple

L'exemple suivant utilise l'instruction Function pour déclarer le nom, les paramètres et le code qui forment le corps d'une procédure Function. Le modificateur ParamArray permet à la fonction d'accepter un nombre variable d'arguments.

Public Function calcSum(ByVal ParamArray args() As Double) As Double
    calcSum = 0
    If args.Length <= 0 Then Exit Function
    For i As Integer = 0 To UBound(args, 1)
        calcSum += args(i)
    Next i
End Function

L'exemple suivant appelle la fonction déclarée dans l'exemple précédent.

Dim returnedValue As Double = calcSum(4, 3, 2, 1)
' The function's local variables are assigned the following values:
' args(0) = 4, args(1) = 3, and so on.

Voir aussi

Tâches

Comment : utiliser une classe générique

Procédures de dépannage

Concepts

Tableaux de paramètres

Expressions lambda

Référence

Sub, instruction (Visual Basic)

Liste de paramètres

Dim, instruction (Visual Basic)

Call, instruction (Visual Basic)

Of

Expression de fonction