変数の名前は、サブのスコープの外に出ないため、あまり気にしない場合があります。実際、名前を指定すると、余分なコード行が追加されます。また、この名前に対処する必要があるため、潜在的なリファクタリング作業が増える可能性があります (後で名前を変更することにした場合)。以下のコードを見てください。
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内の構文のデバッグを実際に提供していませんか? With2010年を使用しています。
明らかに、上記のコードでデバッグすることはあまりありませんが、このような名前のない 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句を互いに入れ子にするにつれて、問題は大きくなります。