Тип «Закрываемое»
В языке существует понятие закрываемого ресурса. Закрываемый ресурс — это значение некоторого типа, которое получается от операционной системы. Для использования этот ресурс необходимо получить у операционной системы, а после окончания использования — вернуть. Это необходимо делать потому, что ресурсы операционной системы являются конечными. Ситуация, когда ресурс не возвращается после использования, называется утечкой ресурсов. Для того чтобы сделать работу с закрываемым ресурсом более простой (и чтобы минимизировать утечку ресурсов операционной системы), служит тип Закрываемое.
Закрываемое я вляется базовым типом для типов, использующих системные ресурсы. При создании экземпляра, являющегося потомком типа Закрываемое, выполняется получение системного ресурса. В тот момент, когда ресурс становится ненужным, следует вызвать метод Закрыть(), который является контрактом типа Закрываемое. Во время вызова метода Закрыть() гарантируется, что ресурс будет возвращен операционной системе и будут выполнены все необходимые действия перед тем, как ресурс вернется операционной системе.
Для облегчения работы с закрываемыми типами предназначен модификатор переменной исп. Важной особенностью такого модификатора является то, что метод Закрыть() будет вызван автоматически в тот момент, когда переменная выходит из области видимости. В этом случае очевидно, что использование ресурса закончено и его надо освободить.
Из этого утверждения есть исключение, связанное с передачей закрываемого ресурса за границу текущей области видимости. Например, какой-либо закрываемый экземпляр создается в методе и возвращается в вызывающий метод. В этом случае вызывающий код берет на себя всю ответственность за жизненный цикл закрываемого ресурса. Такое использование усложняет контроль за ресурсами и не рекомендуется для постоянного использования.