天天看点

C# IDisposable接口与using关键字

1. 简介

接口其实就是一种规范,一种标准,实现该接口的类要遵循该标准,所以就具备该接口标准要求的功能或特性。

C#中的IDisposable接口就是一种非常有用且非常常用的接口,该接口要求类实现Dispose()方法,在该方法中释放占用的资源。如果在析构函数中释放资源要等到垃圾回收时,太晚了。

但是手动调用Dispose方法稍微有点麻烦,而且也怕忘了调用,这样资源也得不到及时释放,所以可以使用using关键字,using关键字代码块的末尾会自动调用Dispose方法。

2. 示例

class Database:IDisposable
    {
        public void visitDatabase()
        {
            Console.WriteLine("开始访问数据库");
        }
        public void Dispose()
        {
            Console.WriteLine("释放数据库连接资源");
        }
        //主函数,测试入口
        static void Main(string[] args)
        {
            //手工释放
            Database db = new Database();
            db.visitDatabase();
            db.Dispose();
            //using关键字自动释放
            using (Database db2 = new Database())
            {
                db2.visitDatabase();
            }
            //using关键字自动释放
            Database db3 = null;
            using (db3 = new Database())
            {
                db3.visitDatabase();
            }
        }
    }
      
C# IDisposable接口与using关键字