微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我为什么要使用IDisposable而不是在c#中使用?

今天,我想用文件执行操作,所以我想出了这段代码

class Test1
    {
        Test1()
        {
            using (var fileStream = new FileStream("c:\\test.txt",FileMode.Open))
            {
                //just use this filestream in a using Statement and release it after use. 
            }
        }
    }

但在代码审查中,我被要求实现Idisposable接口和Finalizer方法

class Test : Idisposable
    {
        test()
        {
            //using some un managed resources like files or database connections.
        }

        ~test()
        {
            //since .NET garbage collector,does not call dispose method,i call in Finalize method since .net garbage collector calls this
        }

        public void dispose()
        {
            //release my files or database connections
        }
    }

但是,我的问题是我为什么要这样做?

虽然根据我不能证明我的方法是合理的,但为什么我们在使用语句时可以使用Idisposable本身可以释放资源)

任何特定的优点或我在这里缺少一些东西?

解决方法

“No One”给出的答案是正确的,即使用块只能用于实现Idisposable接口的类,并且对它的解释是完美的.你方面的问题是“为什么我需要在Test类上添加Idisposable,但在代码审查时,我被要求在Test类上实现Idisposable接口和Finalizer方法.” 答案很简单 1)按照许多开发人员遵循的编码标准,在使用某些资源的类上实现Idisposable总是好的,一旦该对象的范围超过该类中的dispose方法,将确保所有资源都已用完释放. 2)已编写的类永远不会在将来不会进行任何更改,如果进行了此类更改并添加了新资源,则开发人员知道他必须在dispose函数中释放这些资源.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐