Нужно ли утилизировать SqlDataReader
так как это в пределах улова попытки
блок
- Да, так как находящийся внутри try-улова не вызовет метод dispose.
Нужно ли запускать как cmd.Dispose, так и cmd.Connection.Close или одно выводит другое?
- Да, вам нужно запустить оба. Вызов Cmd.dispose не закрывает соединение.
Метод dispose предназначен для использования программистом для очистки ресурсов, которые либо непосредственно не управляются сборщиком мусора, либо должны быть очищены после того, как программа будет выполнена, используя их для освобождения места. Технически, можно настроить программу так, чтобы GC обрабатывал ее утилизацию, но я бы не стал делать такое предположение, тем более что программист, пишущий класс, предоставил вам метод dispose. Помещение команды в оператор using, вероятно, является самым простым путем, потому что вы знаете, что он будет удален, когда код покинет пространство объявления.
using (var connection = new Connection ())
{
using (var cmd = new Command())
{
}
}