我为什么要使用IDisposable而不是在c#中使用?
发布时间:2020-12-15 20:50:28 所属栏目:百科 来源:网络整理
导读:今天,我想用文件执行操作,所以我想出了这段代码 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. } } } 但在代码审查中,我
今天,我想用文件执行操作,所以我想出了这段代码
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函数中释放这些资源.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |