c# – 如何正确实现IDisposable

c# – 如何正确实现IDisposable,第1张

概述在我作为一个开发人员的时候,我已经看到过这么多的C#代码,试图通过将变量设置为null来帮助GC,或者在它们自己的类之间的类(DataSet)上调用Dispose()Dispose()方法 我一直在想,是否有必要在受管理的环境中实现它. 这个代码在设计模式中是否浪费时间? class MyClass : IDisposable { #region IDisposable Members 在我作为一个开发人员的时候,我已经看到过这么多的C#代码,试图通过将变量设置为null来帮助GC,或者在它们自己的类之间的类(DataSet)上调用dispose()dispose()方法
我一直在想,是否有必要在受管理的环境中实现它.

这个代码在设计模式中是否浪费时间?

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1259383.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存