IDisposable
IDisposable接口定义了一个方法--一个释放方法--就是释放那些已被分配出去而并没有在使用的资源。如果你不想代码自动去调用一个不存在的方法,这个方法就显得非常有用。如果你对一个对象使用关键字,而此时还没有实现IDisposable接口,编译器就会返回错误信息。下面这个程序中使用的这个类就是实现IDisposable的代码:
public class TestObject: IDisposable {
public TestObject() {
// 构建代码
}
public void Dispose() {
// 清除管理的资源
component.Dispose();
// 你同时需要清楚没有管理的资源
// 下面一行用于从队列中清除对象,以阻止其进一步的执行
GC.SuppressFinalize(this);
}
}
当你开发你自己的类的时候上面的语句才会派上用场,但是许多类已经具备上述的功能了。一个很好的例子就是与数据库连接在一起运行。
范例
数据是企业活力的源泉,几乎所有的应用程序都连接到了后方的数据。利用using语句来处理数据库对象可以为保存键值提供了机会(减少了try/catch/finally的开销)。并且,我利用微软数据接入应用程序块(DAAB)来进一步简化代码,下面摘录的代码显示了如何对于数据库连接使用using函数:
using ( SqlConnection conn = new SqlConnection(Global.CvoneConnection)
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction()) {
try {
SqlHelper.ExecuteNonQuery(trans, CommandType.StoredProcedure, "sp_name");
trans.Commit();
} catch(Exception ex) {
trans.Rollback();
throw ex;
} } }