C# 如果一个对象没有引用,它什么时候被释放?
如果反复调用GetResults()方法,是否可能有多个实例,或者是否在其作用域结束时自行处理C# 如果一个对象没有引用,它什么时候被释放?,c#,sqldataadapter,C#,Sqldataadapter,如果反复调用GetResults()方法,是否可能有多个实例,或者是否在其作用域结束时自行处理 public static DataTable GetResults() { DataTable dataTable; new SqlDataAdapter(sqlQuery, new SqlConnection(connString)).Fill(dataTable); return dataTable; } 处置对象是指处置对象。它与对象是否存储在变量中无关。使用Disp
public static DataTable GetResults()
{
DataTable dataTable;
new SqlDataAdapter(sqlQuery, new SqlConnection(connString)).Fill(dataTable);
return dataTable;
}
处置对象是指处置对象。它与对象是否存储在变量中无关。使用Dispose策略时,它只是用于清理。即使在处理对象时,对象也可能仍然是“活动的”。只有GC选择删除对象
因此,在使用Sql连接时,最好使用Dispose策略关闭连接。垃圾收集器将调用终结器,您可以自己调用
Dispose()
。由于没有对适配器的引用,因此在下次拾取垃圾时将收集该适配器。@jeroenvanevel GC可能会调用终结器,而不会调用终结器。如果确定性清理很重要,则需要显式地处理资源。@Servy:对,非常重要的区别。