Страницы

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

понедельник, 9 декабря 2019 г.

Команда using()

#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().

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

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