#c_sharp #c_sharp_faq
using(var variable) { } Правильно ли я понял, что данная конструкция создает область видимости(работы) переменной variable. И после закрытия скобки вызывает Dispose() переменной?
Ответы
Ответ 1
Правильно ли я понял, что данная конструкция создает область видимости(работы) переменной variable. Да. Если переменная объявлена (и проинициализирована) в блоке, то ее область видимости ограничена только блоком using. Также возможно использовать блок using c уже объявленной и проинициализированной переменной. Для чего это может понадобиться, см. ниже. И после закрытия скобки вызывает Dispose() переменной? Да. Такой участок: using (var x = ...) { x.Foo(); } Преобразовывается компилятором в следующий код: var x = ...; try { x.Foo(); } finally { if (x != null) { ((IDisposable)x).Dispose(); } } Обратите внимание, что инициализация находится вне блока try. Соответственно, использование в using уже проинициализированной переменной является более компактным способом записи try/finally с вызовом Dispose().
Комментариев нет:
Отправить комментарий