posted on vendredi 3 décembre 2004 23:55
par
patrice
[VB.net is not C#] Option Strict
Dans mon post précédent, Matthieu Nicolescu me suggérait un nouveau post pour cette rubrique VB.net is not C# car il semblait plutôt enervé (et il a entièrement raison) des libertés que permet le VB.net.
En effet, par défaut, le code suivant compile mais ne fonctionne pas :
Sub Main()
DoSomething("zzz") ' Le code fonctionne si on met "True" à la place de "zzz"
End Sub
Public Sub DoSomething(ByVal param As Boolean)
If param Then
Console.WriteLine("Le paramètre est à True")
End If
End Sub
Je suis entièrement d'accord il est plutôt choquant que ce code compile sans problème et lève une exception lors de l'éxécution. Cela est du au langage VB lui même qui est très, et même trop permissif. En effet, il est toujours possible de ne pas déclarer ses variables en VB.net. (il suffit de mettre un Option Explicit Off), et on peut toujours laisser faire le compilateur VB pour le cast des variables et ainsi ne se soucier de rien. Si l'on souhaite éviter que le code présenté ci-dessus compile et imposer au développeur le cast explicite il faut mettre la directive Option Strict à On pour tous vos projets VB.net. Vous éviterez ainsi des erreurs plus ou moins subtiles à détecter...