先看MSDN关于using语句的说明:
例如,如下的代码:
using (SqlConnection cn = new SqlConnection("..."), SqlConnection cn1 = new SqlConnection("...")) { cn.Open(); cn1.Open(); //...... }
实际就相当于
try { SqlConnection cn = new SqlConnection("..."); SqlConnection cn1 = new SqlConnection("..."); cn.Open(); cn1.Open(); //...... } catch {} finally { cn.Close(); cn1.Close(); cn.Dispose(); cn1.Dispose(); }
总结:
对于.NET的托管对象,可保证自动 dispose (释放)object (对象) 所占用的资源,包括因未处理的 exception 而造成区块结束 (但 StackOverflowException 除外),系统都会 dispose 资源。