Освобождение в конце области в 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 с явным освобождением
и привяжите его к области видимости метода,
как в примере урока.
Сравните порядок вывода: сначала работа внутри метода, затем сообщение об освобождении ресурса.