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