IDbConnection и использование блоков в C#
Я понимаю, что обертывание объекта IDbConnection в блоке using гарантирует, что вызов Dispose будет вызван, а используемые им ресурсы будут освобождены. При этом мне также нужно обернуть IDbCommand и IDataReader в использование блоков, или достаточно просто обернуть объект соединения. Благодарю.
2 ответа
Есть несколько простых способов выработать ответ на этот вопрос для любого данного объекта, не обращаясь к документации:
- Если вы заверните это в
using
блок и это неIDisposable
, вы получите синтаксическую ошибку. - Если ваш класс имеет
.Dispose
метод (легко проверяется в Intellisense), то вы должны обернуть его. - Если ваш класс реализует
IDisposable
(легко проверяется с помощью "перейти к определению" или новой функциональности "заглянуть" в VS) вы должны обернуть его.
Кроме того, в качестве примера, вы можете увидеть из документов MSDN, что IDbCommand
инвентарь IDisposable
и поэтому должны быть утилизированы с using
блок.
Лучше всего оборачивать любой объект IDisposable с областью действия в блок использования. Это особенно верно, когда вы пишете код для взаимодействия с интерфейсами, так как вы не имеете представления о деталях базовых реализаций; это может иметь значение в некоторых случаях.