Иногда вам не важно имя переменной, потому что она не выходит за пределы области вашего подпрограммы. Фактически, указание имени добавит дополнительную строку кода. Также теперь у вас есть это имя, с которым можно столкнуться, что может добавить к потенциальным усилиям по рефакторингу (если вы решите переименовать его позже). Посмотрите на код ниже:Есть ли способ отлаживать предложение VB.NET With в Visual Studio?
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
подход мог бы пригодиться.
BTW, названные 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
статьи друг в друге.
«гнездо С предложениями» Пожалуйста, подумайте о детях :( – asawyer
@asawyer: Должна быть какая-то шутка, связанная с языком, скрывающая эти слова. К сожалению, я не носитель языка, поэтому я не могу это понять. – Neolisk
И в ближайшем окне попробуйте '? .Path', и вы получите' Leading '.' Или '!' Может появляться только внутри оператора With With. «Кажется, что с анонимными объектами нет никакого способа - по крайней мере в названных предложениях 'With' вы можете, конечно, подключиться к источнику' fsw.Path' – djv