.NET с помощью блока и возврата; ключевое слово

Когда я говорю это

using (Entities db = new Entities())
{
    return db.TableName.AsQueryable().ToList();
}

Сделайте я обхожу функциональность использования блока, так как я возвращаю что-то и выходы метода прежде, чем выйти из блока использования, таким образом, я думаю, что блок использования не будет служить своей цели и располагать ресурс.

Это корректно?

10
задан Jon Skeet 29 March 2010 в 18:28
поделиться

4 ответа

Вы ошибаетесь; он будет утилизирован.

Оператор using компилируется в блок try / finally, который утилизирует исходный объект в блоке finally. Блоки
finally выполняются всегда, даже если код внутри блока try вернул значение или выбросил исключение.

15
ответ дан 3 December 2019 в 19:32
поделиться

при использовании оператора вызывается Удалите объекта db перед возвратом значения.

3
ответ дан 3 December 2019 в 19:32
поделиться

Нет, блок using принудительно запускает объект Dispose.

http://www.devx.com/dotnet/Article/33167

http://msdn.microsoft.com/en-us/library/yh598w02 (VS.80) .aspx

1
ответ дан 3 December 2019 в 19:32
поделиться

Ваш оператор using действительно будет успешным. Это похоже на следующее (это то, что компилятор C # преобразует оператор using в:

Entities db = new Entities();
try
{
    return db.TableName.AsQueryable().ToList();
}
finally
{
    ((IDisposable)db).Dispose();
}
1
ответ дан 3 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: