Страницы

Поиск по вопросам

пятница, 12 октября 2018 г.

Команда using()

using(var variable) {
}
Правильно ли я понял, что данная конструкция создает область видимости(работы) переменной variable. И после закрытия скобки вызывает Dispose() переменной?


Ответ

Правильно ли я понял, что данная конструкция создает область видимости(работы) переменной 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()

Комментариев нет:

Отправить комментарий