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()
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При создании базы использую для авторизации IdentityВ файле по умолчанию IdentityModels
Помогите пожалуйста разобраться как реализовать сортировку по популярности (отзывам) из двух таблицПри том чтобы отображались все записи...
Имеется функция, проблема в том что при INSERT-е если попадается уникальное поля, он выпадает ошибку после нескольких рефрешов инсерт происходитПоле...