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()
Комментариев нет:
Отправить комментарий