Parfois, vous ne vous souciez pas vraiment du nom d'une variable, car elle ne sort pas du champ d'application de votre sous-programme. En fait, spécifier le nom ajouterait une ligne de code supplémentaire. De plus, vous devez maintenant vous occuper de ce nom, ce qui peut ajouter à l'effort de refactoring potentiel (si vous décidez de le renommer plus tard). Jetez un coup d'oeil au code ci-dessous :
Dim fileInfo As New FileInfo("filename.txt")
With New FileSystemWatcher
.Path = fileInfo.DirectoryName
.Filter = fileInfo.Name
.EnableRaisingEvents = True
AddHandler .Changed, AddressOf OnChanged
End With
Il s'agit d'une construction VB.NET parfaitement valide, qui semble propre et nette. Cependant, lorsqu'il s'agit de déboguer, et en supposant que vous placez un point d'arrêt à l'intérieur de la balise With
il n'y a pas d'option pour saisir cette .Path
pour s'assurer qu'il a été réglé correctement.
Est-ce que j'ai raté quelque chose ici ou est-ce que Visual Studio ne fournit vraiment pas de débogage pour .Property
syntaxe à l'intérieur With
déclarations ? J'utilise l'année 2010.
Évidemment, il n'y a pas grand-chose à déboguer dans le code ci-dessus, mais il peut y avoir de nombreux exemples de cas où une telle sans nom With
serait utile.
BTW, nommé With
ont le même problème, c'est-à-dire que si je devais écrire :
Dim fsw As New FileSystemWatcher
With fsw
.Path = fileInfo.DirectoryName
.Filter = fileInfo.Name
.EnableRaisingEvents = True
AddHandler .Changed, AddressOf OnChanged
End With
Je n'arrive toujours pas à tirer la valeur de .Path
en devant toujours le faire précéder de fsw
.
Le problème prend de l'ampleur au fur et à mesure que l'on s'imbrique. With
les unes dans les autres.