23
mars
2007
IIF moins bien que ? :
mars
2007
En C#, on peut utiliser l’opérateur « ? : ». Par exemple, le code suivant :
string value = test == null ? "" : test;
équivaut à
string value;
if (test == null)
value = "";
else
value = test;
if (test == null)
value = "";
else
value = test;
En VB, on a la fonction IIf. Cependant, cette fonction retourne un object. Par conséquent, on va probablement devoir caster le résultat, ce qui me fait dire que « ? : » est meilleur que IIf.
Remarque : Dans mon exemple,
string value = test == null ? "" : test;
peut se traduire (en C#2) par
string value = test ?? "";
Bonjour.
Il serait peut-être utile de préciser que vous parlez de VB.NET. Car en VB (VB6.0 et VBA), IIF(…) ne renvoie pas forcément un objet.
[code] Dim Feuille As Worksheet
Set Feuille = IIf(1 1, Feuil1, Feuil2)
[/code]
renvoie un objet, ou, dans le cas du code présenté, une erreur si Feuil2 n’est pas un objet.
Mais
[code] Dim MaChaine As String
MaChaine = IIf(1 = 1, « Pierre », « Martine »)[/code]
renvoie bien une chaine de caractère, et non un objet (en VB6.0 ou VBA, une chaine de caractères n’est pas un objet).
sans commentaire !
Un autre gros inconvénient de IIf, c’est qu’il évalue les deux parties même si ce n’est pas necessaire.
Par ex:
premierElt = IIf(liste.Count=0, Nothing, liste(1))
Ce code ne marches pas…