C# Close() Dispose()

C#中Close()方法和DIspose()方法在某些类中作用是一样的,但是在某些类中,Displose又比Close强大一些。

作用相同时:

在Mutex中,实例化了一个Mutex对象后,使用Close 方法和Dispose 方法达到的效果都是一样的,使用后都无法继续使用相关的类了。官方的注释如下:

//
        // 摘要:
        //     释放由当前 System.Threading.WaitHandle 占用的所有资源。
        public virtual void Close();

        //
        // 摘要:
        //     释放 System.Threading.WaitHandle 类的当前实例所使用的所有资源。
        public void Dispose();

在SqlConnection中,使用Close后,还能用Open打开,但是使用Dispose后,就彻底不能使用了。这里的Close是经过重写的,功能已经改变了,如下:

        //
        // 摘要:
        //     关闭与数据库之间的连接。 此方法是关闭任何打开连接的首选方法。
        //
        // 异常:
        //   T:System.Data.SqlClient.SqlException:
        //     打开连接时出现的连接级别的错误。
        public override void Close();

        //
        // 摘要:
        //     释放由 System.ComponentModel.Component 使用的所有资源。
        public void Dispose();

 所以在使用的时候还是要区分好这两个方法的用途,释放资源的首选还是Dispose,它一般是已经包含了close操作

posted @ 2022-08-18 14:26  xunzf  阅读(392)  评论(0编辑  收藏  举报