我有以下代码:
using (MySqlConnection conn = new MySqlConnection(connStr))
{
conn.Open();
cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Events";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
通过阅读本网站上的一些文章,建议DbCommand
应该在一个使用块中,但是,我不明白为什么需要它。
Connection已关闭,那么DbCommand持有什么需要使用块?
如果一个类继承自IDisposable,必须使用using块或手动调用Dispose,是否真的如此?
我在上面的代码中运行了一个包含100个线程的模拟器,并且在DbCommand
上使用了带有使用块的代码,我发现内存使用没有真正的差异。
答案 0 :(得分:0)
DbCommand
是抽象的,并不预先假定特定于供应商的子类将包含哪些本机资源,以及它们应以何种顺序发布。 using
块的正确嵌套似乎是一种合理的隐式编码约定。