Conditions ternaires en VB.NET
Lucidiot —
Informatique —
2012-02-03
Description de IIf() et If() pour améliorer son spaghetti-code.
Bonjour à tous chers développeurs VB.NET ! Votre programme utilise des conditions par centaines, et, jaloux des développeurs C# ou de tous les autres langages disposant d'opérateurs ternaires, des If en une seule ligne ? La fonction IIf()
est faite pour vous !
EDIT 22/06/2015 Microsoft a introduit avec Visual Studio 2008 une autre fonction, If, dont le fonctionnement est plus rapide. Plus de détails en fin d'article.
Syntaxe
IIf(expression As Boolean,TruePart As Object,FalsePart As Object)
- expression : La condition du IF
- TruePart : Objet à retourner si la condition est vraie
- FalsePart : Objet à retourner si la condition est fausse
Exemple
MsgBox(IIf(BoolCondition = True, "La condition vaut True", "La condition vaut False"))
L'équivalent de cette ligne avec des If ordinaires serait :
If BoolCondition = True Then
MsgBox("La condition vaut True")
Else
MsgBox("La condition vaut False")
End If
Les deux codes précédents sont les mêmes, mais l'un est bien plus rapide à écrire que l'autre. Attention toutefois à un effet possiblement néfaste sur la lisibilité du code. Bonne journée et bonne programmation !
Ajout du 22 juin 2015
Microsoft a introduit, avec Visual Studio 2008, une fonction qui m'était encore méconnue : If()
. La différence entre IIf
et If
réside dans la vitesse d'exécution : IIf()
évalue (calcule) d'abord tous les arguments, y compris celui qui ne sera pas retourné. If()
évalue d'abord la condition, et n'évaluera que l'argument utilisé.
Il y a une seconde différence entre IIf
et If
qui rend la fonction plus intéressante : sa syntaxe.
If(argument1, argument2, argument3)
- argument1 : Condition à évaluer
- argument2 : Retourné si argument1 est vrai
- argument3 : Retourné si argument1 est faux
If(argument2, argument3)
- argument2 : Retourné s'il ne vaut pas Nothing.
- argument3 : Retourné si argument2 vaut Nothing.
Vous ne comprenez pas l'intérêt de la chose ? On a une manière plus rapide à coder et à lire pour vérifier si une variable ne vaut rien (et éviter les ArgumentNullException par exemple). Voici donc toutes les manières possibles de vérifier si une variable var a une valeur.
If var = Nothing Then
MsgBox("Vide !")
Else
MsgBox(var)
End If
MsgBox(IIf(var = Nothing, "Vide !", var)) 'Plus court
MsgBox(If(var = Nothing, "Vide !", var)) 'Plus rapide
MsgBox(If(var, "Vide !")) 'Parfait
Commentaires
Il n'y a pour l'instant aucun commentaire. Soyez le premier !