У меня есть метод, который имеет блок try/catch/finaly
внутри. В блоке try я объявляю SqlDataReader
следующим образом:
SqlDataReader aReader = null;
aReader = aCommand.ExecuteReader();
В блоке finally
объекты, которые удаляются вручную, - это объекты, заданные на уровне класса. Таким образом, объекты в методе, которые реализуют IDisposable
, такие как SqlDataReader
выше, они автоматически удаляются? Close()
вызывается в aReader
после того, как цикл while выполняется для получения содержимого читателя (которое должно быть Dispose()
поскольку это вызывает Close()
). Если нет вызова Close()
, будет ли этот объект автоматически закрываться/удаляться после завершения метода или выхода объекта из области видимости?
РЕДАКТИРОВАТЬ: я знаю об using
но есть сценарии, которые меня смущают.