IDbConnection и использование блоков в C#

Я понимаю, что обертывание объекта IDbConnection в блоке using гарантирует, что вызов Dispose будет вызван, а используемые им ресурсы будут освобождены. При этом мне также нужно обернуть IDbCommand и IDataReader в использование блоков, или достаточно просто обернуть объект соединения. Благодарю.

2 ответа

Решение

Есть несколько простых способов выработать ответ на этот вопрос для любого данного объекта, не обращаясь к документации:

  1. Если вы заверните это в using блок и это не IDisposable, вы получите синтаксическую ошибку.
  2. Если ваш класс имеет .Dispose метод (легко проверяется в Intellisense), то вы должны обернуть его.
  3. Если ваш класс реализует IDisposable (легко проверяется с помощью "перейти к определению" или новой функциональности "заглянуть" в VS) вы должны обернуть его.

Кроме того, в качестве примера, вы можете увидеть из документов MSDN, что IDbCommand инвентарь IDisposable и поэтому должны быть утилизированы с using блок.

Лучше всего оборачивать любой объект IDisposable с областью действия в блок использования. Это особенно верно, когда вы пишете код для взаимодействия с интерфейсами, так как вы не имеете представления о деталях базовых реализаций; это может иметь значение в некоторых случаях.

Другие вопросы по тегам