相关疑难解决方法(0)

处理存储在公共静态字段中的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并且必须确保它们是程序中它的最后一个用户.

.net c# idisposable

3
推荐指数
1
解决办法
7321
查看次数

标签 统计

.net ×1

c# ×1

idisposable ×1