Да, вы делаете.Выход из области действия ничего не делает ;он не вызывает Dispose()
, он не собирает мусор, он не вызывает финализатор.
Если тип IDisposable
, то yes .Ваша задача - привести себя в порядок (предполагая, что объект на самом деле «сделан» на этом этапе).
Возможные побочные эффекты от того, что вы этого не делаете:
- filesостаются открытыми и вызывают исключения доступа (
FileStream
) - соединения остаются открытыми и вызывают насыщение пула (
DbConnection
) - неуправляемые дескрипторы насыщаются и вызывают истощение ресурсов (любые winforms /и т.д.)
- транзакции остаются открытыми и вызывают блокировку (
TransactionScope
/ DbTransaction
) - и т. д.
в основном, плохие вещи.
Кроме того, в большинстве случаев, когда вы видите Dispose()
в нижней части метода, using
будет предпочтительным.В есть некоторые случаи, когда это невозможно (например, поля на объекте), но суть остается: это звучит как плохие примеры.