Instructions dans Visual Basic
Une instruction en Visual Basic est une instruction complète. Elle peut contenir des mots clés, des opérateurs, des variables, des constantes et des expressions. Chaque instruction appartient à l’une des catégories suivantes :
Instructions de déclaration, qui nomment une variable, une constante ou une procédure, et peuvent également spécifier un type de données.
Instructions exécutables, qui lancent des actions. Ces instructions peuvent appeler une méthode ou une fonction, et elles peuvent effectuer une boucle ou une branche via des blocs de code. Les instructions exécutables incluent les instructions d’assignement, qui attribuent une valeur ou une expression à une variable ou une constante.
Cette rubrique décrit chaque catégorie. Cette rubrique explique également comment combiner plusieurs instructions sur une seule ligne et comment continuer une instruction sur plusieurs lignes.
Instructions de déclaration
Les instructions de déclaration servent à nommer et définir des procédures, des variables, des propriétés, des tableaux et des constantes. Lorsque vous déclarez un élément de programmation, vous pouvez également définir son type de données, son niveau d’accès et son étendue. Pour plus d’informations, consultez Caractéristiques d’élément déclarées.
L’exemple suivant contient trois déclarations.
Public Sub ApplyFormat()
Const limit As Integer = 33
Dim thisWidget As New widget
' Insert code to implement the procedure.
End Sub
La première déclaration est l’instruction Sub
. Avec son instruction correspondante, l’instruction End Sub
déclare une procédure nommée applyFormat
. Elle spécifie également que applyFormat
est Public
, ce qui signifie que n’importe quel code pouvant faire référence à celle-ci peut l’appeler.
La deuxième déclaration est l’instruction Const
, qui déclare la constante limit
, en spécifiant le type de données Integer
et la valeur 33.
La troisième déclaration est l’instruction Dim
, qui déclare la variable thisWidget
. Le type de données est un objet spécifique, à savoir un objet créé à partir de la classeWidget
. Vous pouvez déclarer une variable de n'importe quel type de données élémentaires ou de n'importe quel type d'objet exposé dans l'application que vous utilisez.
valeurs initiales
Lorsque le code contenant une instruction de déclaration s’exécute, Visual Basic réserve la mémoire requise pour l’élément déclaré. Si l’élément contient une valeur, Visual Basic l’initialise à la valeur par défaut de son type de données. Pour plus d’informations, consultez « Comportement » dans Instruction Dim.
Vous pouvez affecter une valeur initiale à une variable dans le cadre de sa déclaration, comme l’illustre l’exemple suivant.
Dim m As Integer = 45
' The preceding declaration creates m and assigns the value 45 to it.
Si une variable est une variable objet, vous pouvez créer explicitement une instance de sa classe lorsque vous la déclarez à l’aide du mot clé New Operator, comme l’illustre l’exemple suivant.
Dim f As New FileInfo("filename")
Notez que la valeur initiale que vous spécifiez dans une instruction de déclaration n’est pas affectée à une variable tant que l’exécution n’atteint pas son instruction de déclaration. Jusqu’à ce stade, la variable contient la valeur par défaut de son type de données.
Instructions exécutables
Une instruction exécutable effectue une action. Elle peut appeler une procédure, passer à un autre endroit du code, boucler plusieurs instructions ou évaluer une expression. Une instruction d’affectation est un cas particulier d’une instruction exécutable.
L’exemple suivant utilise une If...Then...Else
structure de contrôle pour exécuter différents blocs de code en fonction de la valeur d’une variable. Dans chaque bloc de code, une boucle For...Next
s’exécute un nombre de fois déterminé.
Public Sub StartWidget(ByVal aWidget As widget,
ByVal clockwise As Boolean, ByVal revolutions As Integer)
Dim counter As Integer
If clockwise = True Then
For counter = 1 To revolutions
aWidget.SpinClockwise()
Next counter
Else
For counter = 1 To revolutions
aWidget.SpinCounterClockwise()
Next counter
End If
End Sub
L’instruction If
de l’exemple précédent vérifie la valeur du paramètre clockwise
. Si la valeur est True
, elle appelle la méthode spinClockwise
de aWidget
. Si la valeur est False
, elle appelle la méthode spinCounterClockwise
de aWidget
. La structure de contrôle If...Then...Else
se termine par End If
.
Dans chaque bloc, la boucle For...Next
appelle la méthode appropriée plusieurs fois égale à la valeur du paramètre revolutions
.
Instructions d’assignation
Les instructions d’affectation effectuent des opérations d’affectation, qui consistent à prendre la valeur sur le côté droit de l’opérateur d’affectation (=
) et à la stocker dans l’élément à gauche, comme le montre l’exemple suivant.
v = 42
Dans l’exemple précédent, l’instruction d’affectation stocke la valeur littérale 42 dans la variable v
.
Éléments de programmation disponibles
L’élément de programmation situé à gauche de l’opérateur d’affectation doit être en mesure d’accepter et de stocker une valeur. Cela signifie qu’il doit s’agir d’une variable ou d’une propriété qui n’est pas ReadOnly, ou qu’elle doit être un élément de tableau. Dans le contexte d’une instruction d’affectation, un tel élément est parfois appelé lvalue, pour « valeur gauche ».
La valeur à droite de l’opérateur d’affectation est générée par une expression, qui peut se composer de n’importe quelle combinaison de littéraux, de constantes, de variables, de propriétés, d’éléments de tableau, d’autres expressions ou d’appels de fonction. L'exemple suivant illustre ce comportement.
x = y + z + FindResult(3)
L’exemple précédent ajoute la valeur détenue dans la variable y
à la valeur détenue dans la variable z
, puis ajoute la valeur retournée par l’appel à la fonction findResult
. La valeur totale de cette expression est ensuite stockée dans la variable x
.
Types de données dans les instructions d’affectation
En plus des valeurs numériques, l’opérateur d’affectation peut également affecter des String
valeurs, comme l’illustre l’exemple suivant.
Dim a, b As String
a = "String variable assignment"
b = "Con" & "cat" & "enation"
' The preceding statement assigns the value "Concatenation" to b.
Vous pouvez également affecter des Boolean
valeurs, à l’aide d’un Boolean
littéral ou d’une Boolean
expression, comme l’illustre l’exemple suivant.
Dim r, s, t As Boolean
r = True
s = 45 > 1003
t = 45 > 1003 Or 45 > 17
' The preceding statements assign False to s and True to t.
De même, vous pouvez affecter des valeurs appropriées aux éléments de programmation du type de données Char
, Date
ou Object
. Vous pouvez également affecter une instance d’objet à un élément déclaré comme étant de la classe à partir de laquelle cette instance est créée.
Instructions d'assignation composée
Les Instructions d'assignation composée effectuent d’abord une opération sur une expression avant de l’affecter à un élément de programmation. L’exemple suivant illustre l’un de ces opérateurs, +=
, qui incrémente la valeur de la variable sur le côté gauche de l’opérateur par la valeur de l’expression à droite.
n += 1
L’exemple précédent ajoute 1 à la valeur de n
, puis stocke cette nouvelle valeur dans n
. Il s’agit d’un équivalent abrégé de l’instruction suivante :
n = n + 1
Diverses opérations d’affectation composée peuvent être effectuées à l’aide d’opérateurs de ce type. Pour obtenir la liste de ces opérateurs et avoir plus d’informations sur ces derniers, consultez Opérateurs d’assignation.
L’opérateur d’assignation de concaténation (&=
) est utile pour ajouter une chaîne à la fin de celles déjà existantes, comme l’illustre l’exemple suivant.
Dim q As String = "Sample "
q &= "String"
' q now contains "Sample String".
Conversions de types dans les instructions d’assignation
La valeur que vous affectez à une variable, une propriété ou un élément de tableau doit être d’un type de données approprié à cet élément de destination. En général, vous devez essayer de générer une valeur du même type de données que celle de l’élément de destination. Toutefois, pendant l’affectation, certains types peuvent être convertis en d’autres.
Pour plus d’informations sur la conversion entre les différents types de données, consultez Conversions de types dans Visual Basic. En bref, Visual Basic convertit automatiquement une valeur d’un type donné en tout autre type auquel il s’étend. Une conversion étendue est une conversion qui réussit toujours au moment de l’exécution, sans jamais perdre de données. Par exemple, Visual Basic peut convertir une valeur Integer
en Double
, car Integer
s’étend en Double
. Pour plus d’informations, consultez Widening and Narrowing Conversions.
Les conversions restrictives (celles qui ne s’étendent pas) présentent un risque de défaillance au moment de l’exécution ou de perte de données. Vous pouvez explicitement effectuer une conversion restrictive à l’aide d’une fonction de conversion de type, ou vous pouvez implicitement diriger le compilateur afin d’effectuer toutes les conversions, en définissant Option Strict Off
. Pour plus d’informations, consultez Conversions implicites et explicites.
Mise en place de plusieurs instructions sur une ligne
Vous pouvez avoir plusieurs instructions sur une seule ligne séparée par le caractère deux-points (:
). L'exemple suivant illustre ce comportement.
Dim sampleString As String = "Hello World" : MsgBox(sampleString)
Bien qu’elle soit parfois pratique, cette forme de syntaxe rend votre code plus difficile à lire et à gérer. Par conséquent, il est recommandé de conserver une instruction sur une seule ligne.
Poursuite d’une instruction sur plusieurs lignes
Une instruction s’adapte généralement à une ligne, mais quand elle est trop longue, vous pouvez la poursuivre sur la ligne suivante à l’aide d’une séquence de continuation de ligne, qui se compose d’un espace suivi d’un trait de soulignement (_
) suivi d’un retour chariot. Dans l’exemple suivant, l’instruction exécutable MsgBox
se poursuit sur deux lignes.
Public Sub DemoBox()
Dim nameVar As String
nameVar = "John"
MsgBox("Hello " & nameVar _
& ". How are you?")
End Sub
Continuation de ligne implicite
Dans de nombreux cas, vous pouvez continuer une instruction sur la ligne suivante sans utiliser le caractère de soulignement (_
). Les éléments de syntaxe suivants continuent l’instruction sur la ligne de code suivante de manière implicite.
Après une virgule (
,
). Par exemple :Public Function GetUsername(ByVal username As String, ByVal delimiter As Char, ByVal position As Integer) As String Return username.Split(delimiter)(position) End Function
Après une parenthèse ouvrante (
(
) ou avant une parenthèse fermante ()
). Par exemple :Dim username = GetUsername( Security.Principal.WindowsIdentity.GetCurrent().Name, CChar("\"), 1 )
Après une accolade ouvrante (
{
) ou avant une accolade fermante (}
). Par exemple :Dim customer = New Customer With { .Name = "Terry Adams", .Company = "Adventure Works", .Email = "terry@www.adventure-works.com" }
Pour plus d’informations, consultez Initialiseurs d’objet : Types nommés et anonymes ou Initialiseurs de collection.
Après une expression d’incorporation d’ouverture (
<%=
) ou de fermeture (%>
) dans un XML littéral. Par exemple :Dim customerXml = <Customer> <Name> <%= customer.Name %> </Name> <Email> <%= customer.Email %> </Email> </Customer>
Pour plus d’informations, consultez Expressions incorporées dans XML.
Après l’opérateur de concaténation (
&
). Par exemple :cmd.CommandText = "SELECT * FROM Titles JOIN Publishers " & "ON Publishers.PubId = Titles.PubID " & "WHERE Publishers.State = 'CA'"
Pour plus d’informations, consultez Opérateurs listés par fonctionnalité.
Après les opérateurs d’affectation (
=
,&=
,:=
,+=
,-=
,*=
,/=
,\=
,^=
,<<=
,>>=
). Par exemple :Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Pour plus d’informations, consultez Opérateurs listés par fonctionnalité.
Après les opérateurs binaires (
+
,-
,/
,*
,Mod
,<>
,<
,>
,<=
,>=
,^
,>>
,<<
,And
,AndAlso
,Or
,OrElse
,Like
,Xor
) dans une expression. Par exemple :Dim memoryInUse = My.Computer.Info.TotalPhysicalMemory + My.Computer.Info.TotalVirtualMemory - My.Computer.Info.AvailablePhysicalMemory - My.Computer.Info.AvailableVirtualMemory
Pour plus d’informations, consultez Opérateurs listés par fonctionnalité.
Après les opérateurs
Is
etIsNot
. Par exemple :If TypeOf inStream Is IO.FileStream AndAlso inStream IsNot Nothing Then ReadFile(inStream) End If
Pour plus d’informations, consultez Opérateurs listés par fonctionnalité.
Après un caractère de qualificateur de membre (
.
) et avant le nom du membre. Par exemple :Dim fileStream = My.Computer.FileSystem. OpenTextFileReader(filePath)
Toutefois, vous devez inclure un caractère de continuation de ligne (
_
) après un caractère de qualificateur de membre lorsque vous utilisez l’instructionWith
ou fournissez des valeurs dans la liste d’initialisation pour un type. Envisagez de rompre la ligne après l’opérateur d’affectation (par exemple=
) lorsque vous utilisez des instructionsWith
ou des listes d’initialisation d’objets. Par exemple :' Not allowed: ' Dim aType = New With { . ' PropertyName = "Value" ' Allowed: Dim aType = New With {.PropertyName = "Value"} Dim log As New EventLog() ' Not allowed: ' With log ' . ' Source = "Application" ' End With ' Allowed: With log .Source = "Application" End With
Pour plus d’informations, consultez Instruction With... End With ou Initialiseurs d’objet : types nommés et anonymes.
Après un qualificateur de propriété d’axe XML (
.
,.@
ou...
). Toutefois, quand vous spécifiez un qualificateur de membre, vous devez inclure un caractère de continuation de ligne (_
) lorsque vous utilisez le mot-cléWith
. Par exemple :Dim customerName = customerXml. <Name>.Value Dim customerEmail = customerXml... <Email>.Value
Pour plus d'informations, consultez Propriétés XML Child Axis.
Après un signe inférieur à (<) ou avant un signe supérieur à (
>
) lorsque vous spécifiez un attribut. Également après un signe supérieur à (>
), lorsque vous spécifiez un attribut. Toutefois, vous devez inclure un caractère de fin de ligne (_
) lorsque vous spécifiez des attributs au niveau de l'assemblage ou du module. Par exemple :< Serializable() > Public Class Customer Public Property Name As String Public Property Company As String Public Property Email As String End Class
Pour plus d'informations, voir Aperçu des attributs.
Avant et après les opérateurs de requête (
Aggregate
,Distinct
,From
,Group By
,Group Join
,Join
,Let
,Order By
,Select
,Skip
,Skip While
,Take
,Take While
,Where
,In
,Into
,On
,Ascending
, etDescending
). Vous ne pouvez pas rompre une ligne entre les mots-clés des opérateurs de requête constitués de plusieurs mots-clés (Order By
,Group Join
,Take While
etSkip While
). Par exemple :Dim vsProcesses = From proc In Process.GetProcesses Where proc.MainWindowTitle.Contains("Visual Studio") Select proc.ProcessName, proc.Id, proc.MainWindowTitle
Pour plus d’informations, consultez Requêtes.
Après le
In
mot clé dans uneFor Each
instruction. Par exemple :For Each p In vsProcesses Console.WriteLine("{0}" & vbTab & "{1}" & vbTab & "{2}", p.ProcessName, p.Id, p.MainWindowTitle) Next
Pour plus d’informations, consultez Instruction For Each....
Après le
From
mot clé dans un initialiseur de collection. Par exemple :Dim days = New List(Of String) From { "Mo", "Tu", "We", "Th", "F", "Sa", "Su" }
Pour plus d’informations, consultez Initialiseurs de collection.
Ajout de commentaires
Le code source n’est pas toujours explicite, même pour le programmeur qui l’a écrit. Pour documenter leur code, par conséquent, la plupart des programmeurs utilisent librement les commentaires incorporés. Les commentaires dans un code peuvent expliquer une procédure ou une instruction particulière à toute personne lisant ou travaillant ultérieurement avec ce dernier. Lors de la compilation, Visual Basic ignore les commentaires et n’affecte pas le code compilé.
Les lignes de commentaire commencent par une apostrophe ('
) ou REM
suivies d’un espace. Elles peuvent être ajoutées n’importe où dans le code, sauf dans une chaîne. Pour ajouter un commentaire à une instruction, insérez une apostrophe ou REM
après l’instruction, suivie du commentaire. Les commentaires peuvent également aller sur leur propre ligne distincte. L’exemple suivant illustre ces possibilités.
' This is a comment on a separate code line.
REM This is another comment on a separate code line.
x += a(i) * b(i) ' Add this amount to total.
MsgBox(statusMessage) REM Inform operator of status.
Vérification des erreurs de compilation
Si, après avoir tapé une ligne de code, la ligne s’affiche avec un trait de soulignement bleu ondulé (un message d’erreur peut également apparaître), c’est qu’il y a une erreur de syntaxe dans l’instruction. Vous devez trouver quel est le problème avec l’instruction (en regardant dans la liste des tâches ou en pointant sur l’erreur avec le pointeur de la souris et en lisant le message d’erreur) et le corriger. Tant que vous n’avez pas résolu toutes les erreurs de syntaxe dans votre code, votre programme ne sera pas compilé correctement.
Sections connexes
Terme | Définition |
---|---|
Opérateurs d’assignation | Fournit des liens vers des pages de référence de langue couvrant les opérateurs d’affectation tels que = , *= et &= . |
Opérateurs et expressions | Montre comment combiner des éléments avec des opérateurs pour générer de nouvelles valeurs. |
Procédure : Diviser et combiner des instructions dans le code | Montre comment diviser une instruction unique en plusieurs lignes et comment placer plusieurs instructions sur la même ligne. |
Procédure : Étiqueter des instructions | Montre comment étiqueter une ligne de code. |