悬赏分:5 浏览:267 次
大家好。如下面的代码:
public class Test {
public void Method() {
SqlConnection conn = new SqlConnection(connStr);
//...方法体中没有显式关闭conn
}
}
对于这里的conn,我的理解是:调用Method()方法时,当执行到方法的最后一个}时,conn变量的作用域已到,所以栈上的conn变量值被释放,但是托管堆中的conn对象仍然存在,它要等待垃圾回收器的清理,这样说对么?
所以如果要在此返回一个SqlDataReader对象的话,必须要cmd.ExecuteReader(CommandBehavior.CloseConnection),因为这么做的话,当返回的DataReader对象在另外的地方被关闭时,这个conn也自动被关闭了,对么?