C# 当使用for connection到达作用域的末尾时,是否意味着销毁适配器?

C# 当使用for connection到达作用域的末尾时,是否意味着销毁适配器?,c#,sql-server,database,connection,C#,Sql Server,Database,Connection,我正在运行下面的代码,我不确定适配器(以及我怀疑驻留在其中的SqlCommand实例)是否得到了正确的GCed。此外,我有点不确定如何检查它,除了这样问 using (SqlConnection connection = new SqlConnection(...)) { String command = ... DataTable output = new DataTable(); SqlDataAdapter adapter = new SqlDataAdapter(comman

我正在运行下面的代码,我不确定适配器(以及我怀疑驻留在其中的SqlCommand实例)是否得到了正确的GCed。此外,我有点不确定如何检查它,除了这样问

using (SqlConnection connection = new SqlConnection(...))
{
  String command = ...
  DataTable output = new DataTable();
  SqlDataAdapter adapter = new SqlDataAdapter(command, connection);
  adapter.Fill(parameters);
}

我假设关闭连接是没有必要的,因为当它的声明范围结束时,它会被杀死和破坏。这是对的还是我遗漏了什么鬼鬼祟祟的东西?

是的。当您的代码到达using语句的末尾时,您的连接和其中的所有内容都会被标记为垃圾收集器可以通过,并在循环结束时将其清除。

您没有问过这个问题吗?“没有必要关闭连接,因为当其声明的范围结束时,连接会被终止和销毁。”没有。任何东西都不会自动处理,除非通过使用。对象超出范围时不会被收集-gargage收集会在稍后间歇性地进行,并且是不确定的。例如,如果您在循环中调用此方法(不使用),则连接可能未关闭,这可能会导致异常(例如“打开的连接太多”)或性能问题。否!从未!这是一个具有相同名称的完全不同的用户。他似乎使用了类似的图像作为化身。与我的个人资料的链接是SO中的一个bug。指出的任何其他问题都是一个借口和更多废话的主题,哈哈哈。说真的,我很尴尬。那几乎是一年前的事了,所以我想我无法学习……:)@蒂姆·施梅尔特,但我有一个习惯。我指的是它的范围。所以我想我是安全的