If...Then...Else, instruction (Visual Basic)
Exécute un groupe d'instructions soumises à une condition, en fonction de la valeur d'une expression.
Syntaxe
' Multiline syntax:
If condition [ Then ]
[ statements ]
[ ElseIf elseifcondition [ Then ]
[ elseifstatements ] ]
[ Else
[ elsestatements ] ]
End If
' Single-line syntax:
If condition Then [ statements ] [ Else [ elsestatements ] ]
Liens rapides vers un exemple de code
Cet article comprend plusieurs exemples qui illustrent les utilisations de l’instruction If
...Then
...Else
:
Éléments
condition
Obligatoire. Expression. Doit évaluer en True
ou False
, ou à un type de données implicitement convertible en Boolean
.
Si l’expression est une variable Nullable Boolean
qui prend la valeur Nothing, la condition est traitée comme si l’expression est False
, tandis que les blocs ElseIf
sont évalués s’ils existent, ou le bloc Else
est exécuté s’il existe.
Then
Obligatoire dans la syntaxe monoligne ; facultatif dans la syntaxe multiligne.
statements
Optionnel. Une ou plusieurs instructions qui suivent If
...Then
et sont exécutées si la valeur condition
est True
.
elseifcondition
Obligatoire si ElseIf
est présente. Expression. Doit évaluer en True
ou False
, ou à un type de données implicitement convertible en Boolean
.
elseifstatements
Optionnel. Une ou plusieurs instructions qui suivent ElseIf
...Then
et sont exécutées si la valeur elseifcondition
est True
.
elsestatements
Optionnel. Une ou plusieurs instructions qui sont exécutées si aucune expression condition
ou elseifcondition
précédente ne prend la valeur True
.
End If
Arrête la version multiligne du bloc If
...Then
...Else
.
Notes
Syntaxe multiligne
Quand une instruction If
...Then
...Else
est rencontrée, condition
est testée. Si condition
a la valeur True
, les instructions qui suivent Then
sont exécutées. Si condition
a la valeur False
, chaque instruction ElseIf
(le cas échéant) est évaluée dans l’ordre. Lorsqu’un True
elseifcondition
est trouvé, les instructions immédiatement après le ElseIf
associé sont exécutées. Si aucune elseifcondition
ne prend la valeur True
, ou s’il n’y a pas d’instructions ElseIf
, les instructions qui suivent Else
sont exécutées. Après avoir exécuté les instructions qui suivent Then
, ElseIf
ou Else
, l’exécution continue avec l’instruction qui suit End If
.
Les clauses ElseIf
et Else
sont facultatives. Vous pouvez avoir autant de clauses ElseIf
que vous le souhaitez dans une instruction If
...Then
...Else
, mais aucune clause ElseIf
ne peut apparaître après une clause Else
. Les instructions If
...Then
...Else
peuvent être imbriquées les unes dans les autres.
Dans la syntaxe multiligne, l’instruction If
doit être la seule instruction de la première ligne. Les instructions ElseIf
, Else
et End If
ne peuvent être précédées que d’une étiquette de ligne. Le bloc If
...Then
...Else
doit se terminer par une instruction End If
.
Conseil
L’instruction Select...Case peut être plus utile lorsque vous évaluez une expression unique qui a plusieurs valeurs possibles.
Syntaxe monoligne
Vous pouvez utiliser la syntaxe à ligne unique pour une condition unique avec du code à exécuter si la valeur est vrai. Toutefois, la syntaxe à plusieurs lignes offre plus de structure et de flexibilité et est plus facile à lire, à gérer et à déboguer.
Ce qui suit le mot clé Then
est examiné pour déterminer si une instruction est un If
à ligne unique. Si quelque chose d’autre qu’un commentaire apparaît après Then
sur la même ligne, l’instruction est traitée comme une instruction If
à une seule ligne . Si Then
est absent, il doit s’agir du début d’uneIf
...Then
...Else
à plusieurs lignes.
Dans la syntaxe monoligne, plusieurs instructions peuvent être exécutées à la suite d’une décision If
...Then
. Toutes les instructions doivent se trouver sur la même ligne et être séparées par des points-virgules.
Exemple de syntaxe multiligne
L’exemple suivant illustre l’utilisation de la syntaxe multiligne de l’instruction If
...Then
...Else
.
'Create a Random object to seed our starting value
Dim randomizer As New Random()
'set our variable
Dim count As Integer = randomizer.Next(0, 5)
Dim message As String
'If count is zero, output will be no items
If count = 0 Then
message = "There are no items."
'If count is 1, output will be "There is 1 item.".
ElseIf count = 1 Then
message = "There is 1 item."
'If count is greater than 1, output will be "There are {count} items.", where {count} is replaced by the value of count.
Else
message = $"There are {count} items."
End If
Console.WriteLine(message)
'This example displays output like the following:
' There are 4 items.
Exemple de syntaxe imbriquée
L’exemple suivant contient des instructions If
...Then
...Else
imbriquées.
Public Sub Main()
' Run the function as part of the WriteLine output.
Console.WriteLine("Time Check is " & CheckIfTime() & ".")
End Sub
Private Function CheckIfTime() As Boolean
' Determine the current day of week and hour of day.
Dim dayW As DayOfWeek = DateTime.Now.DayOfWeek
Dim hour As Integer = DateTime.Now.Hour
' Return True if Wednesday from 2 to 3:59 P.M.,
' or if Thursday from noon to 12:59 P.M.
If dayW = DayOfWeek.Wednesday Then
If hour = 14 Or hour = 15 Then
Return True
Else
Return False
End If
ElseIf dayW = DayOfWeek.Thursday Then
If hour = 12 Then
Return True
Else
Return False
End If
Else
Return False
End If
End Function
'This example displays output like the following:
'Time Check is False.
Exemple de syntaxe monoligne
L’exemple suivant illustre l’utilisation de la syntaxe monoligne.
Private Sub SingleLine()
'Create a Random object to seed our starting values
Dim randomizer As New Random()
Dim A As Integer = randomizer.Next(10, 20)
Dim B As Integer = randomizer.Next(0, 20)
Dim C As Integer = randomizer.Next(0, 5)
'Let's display the initial values for comparison
Console.WriteLine($"A value before If: {A}")
Console.WriteLine($"B value before If: {B}")
Console.WriteLine($"C value before If: {C}")
' If A > 10, execute the three colon-separated statements in the order
' that they appear
If A > 10 Then A = A + 1 : B = B + A : C = C + B
'If the condition is true, the values will be different
Console.WriteLine($"A value after If: {A}")
Console.WriteLine($"B value after If: {B}")
Console.WriteLine($"C value after If: {C}")
End Sub
'This example displays output like the following:
'A value before If: 11
'B value before If: 6
'C value before If: 3
'A value after If: 12
'B value after If: 18
'C value after If: 21