c#中的using关键字有很多用处,这里例举下它对对象的释放的作用。
因为在研究微软的petshop时,发现它的数据库底层操作大多会使用到using():
这里它的一个 执行SQL语句,返回影响的记录数的函数:
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="connection">数据库连接对象</param>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(SqlConnection connection, string SQLString)
{
if (connection == null) throw new ArgumentNullException("connection");
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException E)
{
throw new Exception(E.Message);
}
finally
{
connection.Close();
connection.Dispose();
}
}
}
这里的using的作用就是在函数执行完后自动释放对象的,也就是自动调用Dispose方法。
在网上看到一测试它的例子,我们引用下,呵呵:
class Demo:IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose");
}
public void DemoMethod()
{
Console.WriteLine("hi");
}
};
using (Demo a = new Demo())
{
a.DemoMethod();
}
可以看到Dispose()方法也会同时执行,这样就达到了自动清除对象资源的作用了。