c# – 可以用花括号替换using语句吗?
发布时间:2020-12-15 07:40:59 所属栏目:百科 来源:网络整理
导读:我使用SqlConnection的using语句.它对性能有好处,因为强制调用Dispose()会更快地释放与池的连接. 但是,我意识到在使用中创建的对象无法重新定义.我不能这样做: using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(
我使用SqlConnection的using语句.它对性能有好处,因为强制调用Dispose()会更快地释放与池的连接.
但是,我意识到在使用中创建的对象无法重新定义.我不能这样做: using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); //... connection = new SqlConnection(connectionString2); //... connection = new SqlConnection(connectionString3); } 我想知道我是否可以替换使用,并做这样的事情: { SqlConnection connection = new SqlConnection(connectionString); connection.Open(); //... connection = new SqlConnection(connectionString2); //... connection = new SqlConnection(connectionString3); } 在last}括号后,将无法访问SqlConnection.当对象超出范围时,Dispose()会立即被调用吗? 解决方法
不,在第二个例子中,事情不会自动清理(实际上,使用您拥有的代码,您将保持几个连接处于打开状态).
不仅如此,如果在使用块内抛出异常,您将失去自动清理功能.请记住,使用块分解为: SqlConnection connection = new SqlConnection(connectionString); try { connection.Open(); // Do work } finally { connection.Dispose(); } 如果你真的使用不同的连接,并且每个连接在块的末尾都是Disposed,我将使用几个使用块: using(SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Do Work } // First connection is disposed using(SqlConnection connection = new SqlConnection(connectionString2)) { // Do More Work } // Second connection is disposed using(SqlConnection connection = new SqlConnection(connectionString3)) { // Do More Work } // Last connection is dipsosed (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |