\0_ Opérateur ternaire en Visual Basic

mercredi 20 août 2008

Depuis le framework 3.5, Visual Basic dispose (enfin) d'un vrai opérateur ternaire ! \0/

Pour rappel, jusqu'à présent, ce qu'on avait de plus approchant était la méthode Iif provenant de VB6 Microsoft.VisualBasic.DLL. Le problème avec ça, c'est que comme il s'agit d'un appel de méthode, tous les paramètres sont évalués avant l'exécution du code. Autrement dit, si j'écris :
Dim pouet as string
Dim pinpon as string
pinpon = Iif(pouet IsNot Nothing, pouet.Trim(), String.Empty)
Je vais avoir droit à une belle NullReferenceException dans la figure : l'appel à pouet.Trim() étant évalué lors de l'appel à Iif, comme pouet n'est pas initialisé, l'exception est levée.

Aujourd'hui, tout cela est terminé, et on écrira le code précédent de la façon suivante :
Dim pouet as string
Dim pinpon as string
pinpon = If(pouet IsNot Nothing, pouet.Trim(), String.Empty)
La syntaxe est donc exactement la même, si ce n'est qu'on utilise if à la place iif et qu'on ne provoque pas d'exception :-)

Au passage, notez que si l'opérateur est utilisé avec seulement deux arguments, il agit comme le ?? du C#, autrement dit : "si le premier paramètre est à null, retourner le second paramètre, sinon retourner le premier. Exemple :
Dim pouet as string
Dim pinpon as string
pinpon = If(pouet, String.Empty)


Happy (safe) coding _0/

Réactions :

mercredi 20 août 2008 - 13:58

c'est intéressant, mais concrètement y a-t-il encore beaucoup de développements en Visual Basic ?

Depuis l'avènement de .Net il me semble que la plus part des gens passent par du C#. Après pour la maintenance de codes VB existants effectivement ....

mercredi 20 août 2008 - 14:58

Ah non non, il y a encore énormément de développement en vb, y compris des nouveaux projets.
Là par exemple, sur ma mission actuelle, je développe sur un projet qui a trois ans, et qui a dès le début été écrit en... vb.net.
Ma mission précédente était en vb.net aussi.

Il ne faut pas sous-estimer le fait que les développeurs vb6 sont nettement plus faciles à former à vb.net qu'à C#, ce qui fait que le langage est toujours très populaire.

mercredi 27 août 2008 - 22:27

Il ne faut pas sous-estimer le fait que les développeurs vb6 sont nettement plus faciles à former à vb.net qu'à C#, ce qui fait que le langage est toujours très populaire


argl !
Belegar

jeudi 28 août 2008 - 10:28

Je ne te le fais pas dire.
Entre les formations foireuses et ceux qui ne veulent pas faire d'efforts, le code résultant est souvent un mélange improbable de fonctions vb6 portées en .NET et de .NET pur, donnant l'impression à celui qui maintient ce code d'être un médecin militaire : chaque jour amène son lot d'atrocités, mais on serre les dents, on panse les plaies, et on espère qu'un jour l'horreur cessera et que tout le monde codera correctement.
Mais là je m'égare un peu.

lundi 16 février 2009 - 22:39

Maintenant je comprend pourquoi j'ai directement switché du -dingding- vb6 au -turlututu- c# :)

mardi 30 juin 2009 - 16:11

Pour développer proprement en VB :

Option Explicit On
Option Strict On
Option Infer On

Sinon, ce n'est même pas la peine... ;)

Un csharpiste amené à bosser aussi en vb
Laurent

mardi 30 juin 2009 - 18:00

C'est clair ^_^
Et bon courage pour le vb, alors :)

Réagir :






(ne sera pas affiché - gravatar)
(si vous ne le connaissez pas, voir cette page)
(mais qu'est-ce que c'est ? - télécharger)



  • Pour faire du gras gras : <b>gras</b>
  • Pour faire de l'italique : <i>italique</i>
  • Pour souligner : <u>souligné</u>
  • Pour barrer : <s>barré</s>
  • Pour faire un citation : <blockquote>citation</blockquote>
  • Pour faire un lien : <a href="adresse du lien">texte du lien</a>
  • Pour mettre une image : <img src="adresse de l'image"/>
  • nop se gratte l'oreille : /me se gratte l'oreille