Класс реализует интерфейс IDisposable
, что означает, что он имеет метод Dispose
.
Не каждый класс, реализующий IDisposable, требует, чтобы вы вызывали Dispose
, но большинство из них делают. Если вы видите, что класс реализует IDisposable
(или имеет метод Dispose
, потому что он наследует интерфейс от базового класса), у вас есть два варианта:
Углубитесь в документацию, чтобы узнать, почему класс реализует IDisposable
, и действительно ли вам нужно вызвать Dispose
.
Просто позвоните Dispose
.
Любой метод безопасен. Если метод Dispose
ничего не делает, вызов будет очень быстрым. Вы даже можете позвонить Dispose
более одного раза без вреда.
Еще лучше, чем просто вызвать метод Dispose
, это использовать блок using
:
using (FileStream s = File.OpenRead(path)) {
...
}
В конце скобки блока метод Dispose
вызывается автоматически. Блок using
реализован как try...finally
, поэтому гарантированно вызывается метод Dispose
, даже если в блоке возникает исключение.