Команда using()

269
14 февраля 2017, 17:00
using(var variable)
{
}

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

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

READ ALSO
Заполнение базы данных CodeFirst EF

Заполнение базы данных CodeFirst EF

При создании базы использую для авторизации IdentityВ файле по умолчанию IdentityModels

301
datalist Аналог в ASP.NET

datalist Аналог в ASP.NET

привет есть код

306
Сортировка по отзывам из двух таблиц

Сортировка по отзывам из двух таблиц

Помогите пожалуйста разобраться как реализовать сортировку по популярности (отзывам) из двух таблицПри том чтобы отображались все записи...

382
Создание уникального поля

Создание уникального поля

Имеется функция, проблема в том что при INSERT-е если попадается уникальное поля, он выпадает ошибку после нескольких рефрешов инсерт происходитПоле...

303