c# – 处理存储在公共静态字段中的IDisposable对象
发布时间:2020-12-16 00:06:22 所属栏目:百科 来源:网络整理
导读:如果一个类有一个实现IDisposable的实例字段,那么包含的类实现了IDisposable和类,它在Dispose方法中对Dispose方法进行了记录. public class A : IDisposable { public System.Drawing.Font font = new Font("Arial",10.0f); public void Dispose() { font.Di
如果一个类有一个实现IDisposable的实例字段,那么包含的类实现了IDisposable和类,它在Dispose方法中对Dispose方法进行了记录.
public class A : IDisposable { public System.Drawing.Font font = new Font("Arial",10.0f); public void Dispose() { font.Dispose() } } (我知道我没有正确处理dispose模式,但是示例代码应该足够好) 如果该字段是静态字段,那么调用字段的Dispose应该在哪里? public class B { public static System.Drawing.Font font = new Font("Arial",10.0f); } 我可以让B类实现IDisposable并调用font.Dispose,但如果以后再次使用B.font会导致问题.除了你必须记住访问静态方法的dispise,你需要创建一个实例来调用Dispose. 我也可以创建一个静态Dispose方法,但是用户必须记住调用Dispose并且必须确保它们是程序中它的最后一个用户. 解决方法
加载类型时会初始化静态字段.
因此,从逻辑上讲,卸载包含类型时配置分配给静态字段的对象是有意义的. 但是,类型不会被卸载. AppDomains周围可能存在一些奇特的复杂问题,但我怀疑这不适用于您的情况. 因此,我不会处置该实例,否则您将拥有一个不适合使用的公共可用对象实例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |