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 :MustOverride Overrides
NotOverridable Overrides
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
Concepts
Référence
Sub, instruction (Visual Basic)
Dim, instruction (Visual Basic)