変数の名前は、サブのスコープの外に出ないため、あまり気にしない場合があります。実際、名前を指定すると、余分なコード行が追加されます。また、この名前に対処する必要があるため、潜在的なリファクタリング作業が増える可能性があります (後で名前を変更することにした場合)。以下のコードを見てください。
Dim fileInfo As New FileInfo("filename.txt")
With New FileSystemWatcher
.Path = fileInfo.DirectoryName
.Filter = fileInfo.Name
.EnableRaisingEvents = True
AddHandler .Changed, AddressOf OnChanged
End With
これは完全に有効な VB.NET コンストラクトであり、すっきりと見えます。ただし、デバッグに関しては、With
句内にブレークポイントを配置すると仮定すると、ブレークポイント.Path
が適切に設定されていることを確認するためにそれを取得するオプションはありません。
ここで何か不足していますか、それとも Visual Studio はステートメント.Property
内の構文のデバッグを実際に提供していませんか? With
2010年を使用しています。
明らかに、上記のコードでデバッグすることはあまりありませんが、このような名前のない With
アプローチが役立つ場合の例は数多くあります。
ところで、名前付きWith
句にも同じ問題があります。つまり、次のように書くとします。
Dim fsw As New FileSystemWatcher
With fsw
.Path = fileInfo.DirectoryName
.Filter = fileInfo.Name
.EnableRaisingEvents = True
AddHandler .Changed, AddressOf OnChanged
End With
の値を取得することはまだできず、.Path
常に接頭辞を付けなければなりませんfsw
。
With
句を互いに入れ子にするにつれて、問題は大きくなります。