Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
⊗csOpRsUb 160 of 163 menu
◀ ▶

Гарантированное освобождение в блоке в C#

Вручную вызывать Dispose перед каждым return неудобно и легко забыть ветку.

Блок using оборачивает объект в скобки: using (var room = new Room()) { ... }. При выходе из блока среда вызовет Dispose автоматически. Так освобождение привязано к границе блока, а не к каждой строке вручную.

Класс Room закроет ресурс в Dispose:

using (Room room = new Room()) { Console.WriteLine(room.open); } Console.WriteLine("after block"); class Room : IDisposable { public bool open = true; public void Dispose() { open = false; Console.WriteLine("room closed"); } }

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

Внутри блока выведите поле объекта, а после его конца убедитесь по сообщению на экране, что ресурс уже закрыт.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить