如果一个类有一个实现 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 并且必须确保他们是程序中的最后一个用户。