我一直在想,是否有必要在受管理的环境中实现它.
这个代码在设计模式中是否浪费时间?
class MyClass : Idisposable { #region Idisposable Members public voID dispose() { otherVariable = null; if (dataSet != null) { dataSet.dispose(); } } #endregion}解决方法 GC不调用.dispose()(但是,它调用finalize〜MyClass()方法,可以提供对dispose()方法的调用,以便在GC决定清理类时自动管理资源).
您必须始终提供一种处理内部资源(例如DataSet)的方式来使用您的类的代码(并确保您实际调用.dispose()或将构造函数包含在使用中).强烈建议您在使用内部资源的课程上使用Idisposable.
从MSDN:
The primary use of this interface is
to release unmanaged resources. The
garbage collector automatically
releases the memory allocated to a
managed object when that object is no
longer used. However,it is not
possible to predict when garbage
collection will occur. Furthermore,
the garbage collector has no kNowledge
of unmanaged resources such as window
handles,or open files and streams.
public voID dispose(){ otherVariable = null; if (dataSet != null) { dataSet.dispose(); dataSet = null; }}总结
以上是内存溢出为你收集整理的c# – 如何正确实现IDisposable全部内容,希望文章能够帮你解决c# – 如何正确实现IDisposable所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)