其实这个知识点我也不太清楚,我自己习惯使用using。而查询资料后得出,close和dispose还是有区别的, 不过区别并不大。大部分情况,使用close和dispose都是可以的。
资料博文:http://www.189works.com/article-58655-1.html
引用微软ADO.Team的经理的话说,sqlconnection的close和dispose实际是做的同一件事,唯一的区别是Dispose方法清空了connectionString,即设置为了null.
比如SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=northwind;User ID=sa;Password=steveg");
con.Open();
con.Close();
con.Open();
con.Dispose();
con.Open();
上例运行发现,close掉的connection可以重新open,dispose的不行,因为connectionstring清空了,会抛出异常,但请注意此时sqlconnection对象还在。
根据翻译,可以这么简单理解:close是关闭对象,Dispose是销毁对象,垃圾回收机制。
而其实dispose也做了close的工作。Dispose会自动检查是否调用了close,如果close了,就直接Dispose,如果没有close,就先调用close再Dispose。
习惯性的做法是,使用using程序块,在离开using程序块的时候,CLR会自动调用类型所创建对象的Dipose方法。
|