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