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

Освобождение в конце области в C#

Блок using ( ... ) { } добавляет лишний уровень отступа, когда ресурс нужен почти до конца метода.

Объявление using пишут как using var room = new Room();. Объект живет до конца текущего блока или метода, а Dispose вызовется при выходе из этой области - так же, как при закрытии блочной формы using.

Перепишем пример с комнатой через using var:

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

Сообщение из Dispose появится после последней команды метода, когда область видимости room закончится.

Сделайте класс Handle с явным освобождением и привяжите его к области видимости метода, как в примере урока.

Сравните порядок вывода: сначала работа внутри метода, затем сообщение об освобождении ресурса.

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