2008-09-19 1 views
1

VB.NET имеет очень удобный «с» утверждением, но она также позволяет использовать его на безымянном переменной, например:VB.NET - Как получить экземпляр, используемый с заявлением в ближайшем окне

With New FancyClass() 
    .Level = "SuperSpiffy" 
    .Style = Slimming 
    .Execute() 
End With 

Есть ли способ попасть в «скрытый» экземпляр, чтобы я мог просматривать его свойства в окне Immediate? Я сомневаюсь, что я получу его в окнах часов, так что сразу все в порядке.

Если вы пытаетесь получить доступ к экземпляру таким же образом (скажем, когда .Execute() бросает исключение) из Немедленное окна, вы получите сообщение об ошибке:

? .Style 
'With' contexts and statements are not valid in debug windows. 

Есть ли какой-нибудь трюк, который может быть использован для получения это, или мне нужно преобразовать код в другой стиль? Если With функционировал скорее как оператор Using (например, «С v = New FancyClass()»), это не создаст проблемы.

Я знаю, как работает With, какие существуют альтернативы, что делает компилятор и т. Д. Я просто хочу знать, возможно ли это.

ответ

1

Как ответ, простой ответ «нет».

Но это не другой способ сделать это: вместо объявления, а затем очистки переменной следует использовать «Использование».

Using fc as new FancyClass() 
    With fc  
    .Level = "SuperSpiffy"  
    .Style = Slimming  
    .Execute() 
    End With 
End Using 

Затем вы можете использовать FC в ближайшем окне и не должны помнить, чтобы написать

fc=nothing 

линии.

Просто некоторые больше мыслей о нем;)

1

Что не так с определением переменной на одной строке и ее использованием в следующей инструкции? Я понимаю, что он сохраняет переменную дольше, но это так ужасно?

Dim x = new SomethingOrOther() 
With x 
    .DoSomething() 
End With 
x = Nothing ' for the memory conscious 

Две дополнительные линии обыкновение убивать вас =)

Edit: Если вы просто ищете да/нет, я должен был бы сказать: Нет

+0

Спасибо, но мне действительно нужен ответ на вопрос. Я знаю, как объявлять переменные, и точно, как оператор with работает с точки зрения компилятора. – 2008-09-20 07:18:24

+0

Отредактировано. Нет, нет синтаксиса для захвата "." самостоятельно. – Oli 2008-09-21 11:38:19

0

Вы создаете переменная в любом случае - в первом случае (ваш пример) компилятор создает неявную переменную, к которой вам не разрешено реально попасть, а во втором случае (еще один ответ - Oli) вы создавали бы переменная явно.

Если вы создаете его явно, вы можете использовать его в непосредственном окне, и вы можете явно уничтожить его, когда вы закончите с ним (я думаю, что это одна из памяти, я полагаю!) Вместо того, чтобы оставлять эти очистить детали до магических процессов. Я не думаю, что есть какой-либо способ получить неявную переменную в непосредственном окне. (и я не доверяю магическим процессам). Я никогда не использую многоточечную нотацию или неявные переменные по этой причине)

1

Я надеюсь, что на самом деле это не способ, чтобы получить на него, так как легкий ответ «нет», и я не нашел способ еще ни.В любом случае, ничто не говорит о том, что на самом деле у нас есть обоснование «нет», только что никто не имеет =) Это всего лишь одна из тех вещей, которые вы считаете командой отладчика vb, которая должна была бы вставить, учитывая, как классический «с» =

Во всяком случае, я знаю все об использовании и Идентизме, я знаю как исправить код, как его называли некоторые, но я не всегда этого хочу.

Что касается использования, я не люблю реализовывать IDisposable на своих классах, чтобы получить немного сахара.

Что нам действительно нужно, так это «С var = New FancyClass()», но это может быть просто путано!