Historique de la question
L'opérateur If...Else est un outil de contrôle fondamental, présent dans toutes les versions de Visual Basic, depuis la toute première version. Son développement a évolué d'une simple bifurcation linéaire à une syntaxe étendue avec prise en charge de ElseIf, End If, et d'expressions logiques de toute complexité.
Problème
Beaucoup commettent des erreurs en raison d'un formatage ou d'un imbrication incorrects des conditions, utilisent mal ElseIf, ce qui complique la lisibilité et engendre des erreurs logiques difficiles à déceler. Il n'est pas rare que les débutants confondent When et ElseIf, et commettent aussi l'erreur de dupliquer la logique.
Solution
Utilisez If...ElseIf...Else...End If pour structurer lisiblement les conditions imbriquées. Regroupez toujours les conditions pertinentes, évitez les vérifications répétées et les constructions redondantes. Pour des conditions complexes, il est préférable d'utiliser des opérateurs logiques (AndAlso, OrElse).
Exemple de code :
Dim age As Integer = 22 If age < 18 Then Console.WriteLine("Mineur") ElseIf age < 65 Then Console.WriteLine("Adulte") Else Console.WriteLine("Senior") End If
Caractéristiques clés :
ElseIf améliore la lisibilité.Que se passe-t-il si l'on n'utilise pas End If dans des constructions If multi-lignes ?
Erreur de compilation. Toutes les constructions multi-lignes nécessitent End If. Des améliorations ont été apportées avec l'apparition d'If sur une ligne, par exemple :
If x > 0 Then y = 1 Else y = -1
Un ElseIf peut-il avoir son propre Else ?
Non. Un seul Else peut être utilisé dans la chaîne de conditions, il est associé à l'ensemble du bloc If. Par exemple :
If x = 1 Then ... ElseIf x = 2 Then ... Else ... End If
Quelle est la différence entre l'opérateur Or et OrElse ?
Or évalue toujours les deux conditions, tandis que OrElse n'évalue que si nécessaire (si la première est fausse). Utilisez OrElse pour le court-circuit.
Imbrication multi-niveaux d'If, où chaque condition n'est pas accompagnée de Else, et pas assez de documentation, entraînant des erreurs lors de l'ajout de nouvelles branches.
Avantages :
Inconvénients :
Utilisation de ElseIf lisibles avec des explications, regroupement de conditions proches, conclusion de toutes les branches.
Avantages :
Inconvénients :