Share via


Function, instruction (Visual Basic)

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

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

Éléments

Terme

Définition

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 (Visual Basic).

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 (Visual Basic).

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 paramètres suivants :

interface.definedname

ÉlémentDescription
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, 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émentDescription
eventvariable Obligatoire.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 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.

End Function

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 (Visual Basic).

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.

Notes

Vous pouvez utiliser des expressions lambda pour définir des expressions de fonctions dans la ligne. Pour plus d'informations, consultez Expression de fonction (Visual Basic) et Expressions lambda (Visual Basic).

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.

Module Module1

    Sub Main()
        ' In the following function call, calcSum's local variables 
        ' are assigned the following values: args(0) = 4, args(1) = 3, 
        ' and so on. The displayed sum is 10.
        Dim returnedValue As Double = calcSum(4, 3, 2, 1)
        Console.WriteLine("Sum: " & returnedValue)
        ' Parameter args accepts zero or more arguments. The sum 
        ' displayed by the following statements is 0.
        returnedValue = calcSum()
        Console.WriteLine("Sum: " & returnedValue)
    End Sub

    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

End Module

Voir aussi

Tâches

Comment : utiliser une classe générique (Visual Basic)

Procédures de dépannage (Visual Basic)

Référence

Sub, instruction (Visual Basic)

Liste de paramètres (Visual Basic)

Dim, instruction (Visual Basic)

Call, instruction (Visual Basic)

Of, clause (Visual Basic)

Expression de fonction (Visual Basic)

Concepts

Tableaux de paramètres (Visual Basic)

Expressions lambda (Visual Basic)