shm*_*lie 3 .net c# idisposable
如果一个类有一个实现IDisposable的实例字段,那么包含的类实现了IDisposable和类,它在Dispose方法中对Dispose方法进行了记录.
public class A : IDisposable
{
public System.Drawing.Font font = new Font("Arial", 10.0f);
public void Dispose()
{
font.Dispose()
}
}
Run Code Online (Sandbox Code Playgroud)
(我知道我没有正确处理dispose模式,但是示例代码应该足够好)
如果该字段是静态字段,那么调用字段的Dispose应该在哪里?
public class B
{
public static System.Drawing.Font font = new Font("Arial", 10.0f);
}
Run Code Online (Sandbox Code Playgroud)
我可以让B类实现IDisposable并进行调用font.Dispose但是如果稍后再使用B.font会导致问题.除了你必须记住访问静态方法的dispise,你需要创建一个实例来调用Dispose.
我也可以创建一个静态Dispose方法,但是用户必须记住调用Dispose并且必须确保它们是程序中它的最后一个用户.
加载类型时会初始化静态字段.
因此,从逻辑上讲,卸载包含类型时配置分配给静态字段的对象是有意义的.
但是,类型不会被卸载.AppDomains周围可能存在一些奇特的复杂问题,但我怀疑这不适用于您的情况.
因此,我不会处置情况,否则你将有一个对象,它是不宜使用的公开可用的实例.
| 归档时间: |
|
| 查看次数: |
7321 次 |
| 最近记录: |