gpt4 book ai didi

c# - 处理存储在公共(public)静态字段中的 IDisposable 对象

转载 作者:行者123 更新时间:2023-11-30 13:27:09 24 4
gpt4 key购买 nike

如果一个类有一个实现 IDisposable 的实例字段,则包含类实现 IDisposable 和在其 Dispose 方法中字段 Dispose 方法的类。

public class A : IDisposable 
{
public System.Drawing.Font font = new Font("Arial", 10.0f);

public void Dispose()
{
font.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 周围可能存在一些奇特的并发症,但我怀疑这不适用于您的情况。

因此我不会处理该实例,否则您将拥有一个不适合使用的对象的公开可用实例。

关于c# - 处理存储在公共(public)静态字段中的 IDisposable 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14032941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com