DBCommand используя блок

У меня есть следующий код:

using (MySqlConnection conn = new MySqlConnection(connStr))
{
    conn.Open();

    cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM Events";
    cmd.CommandType = CommandType.Text;
    cmd.ExecuteNonQuery();
}

После прочтения нескольких статей на этом сайте предлагается DbCommand должен быть в блоке использования, однако я не понимаю, зачем это нужно. Соединение закрыто, так что же удерживает DbCommand, для чего нужен блок using? Действительно ли это так, если класс наследует от IDisposable, что вы должны использовать блок using или вызывать вручную Dispose?

Я запустил симулятор с 100 потоками кода выше, а также с кодом с использованием блока на DbCommand и я не видел реальных различий в использовании памяти.

1 ответ

DbCommand является абстрактным и не предполагает, какие собственные ресурсы будет содержать подкласс конкретного поставщика и в каком порядке они должны быть освобождены. Правильное вложение using блоки кажутся разумным соглашением о неявном кодировании.

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