gpt4 book ai didi

c# - 在 C# 中正确处理对象层次结构

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:10 24 4
gpt4 key购买 nike

我正在从事一个项目,其中某个类层次结构实现了 IDisposable。

一些类还实现了 Finalize 方法 ( ~MyClass() )

一般情况下是这样的:

public class BaseClass : IDisposable
{
}

public class SomeClass : BaseClass
{
~SomeClass()
{
Dispose();
}

Dispose()
{
// Do some stuff.
base.Dispose();
}
}

public class AnoterClass : SomeClass
{
~AnoterClass()
{
Dispose();
}

Dispose()
{
// Do some stuff.
base.Dispose();
}
}

我想知道处理调用 Dispose 的正确方法是什么,因为看起来这些对象是通过调用 Dispose() 处理的,后来由于调用了 Finalize 方法而崩溃。

是否最好在层次结构中的最低类保留一个标志(处理 protected bool 值),并在类层次结构的每个级别检查它?

我发现每个可能的解决方案都需要一些代码重复,这不是我所追求的。

最佳答案

如果您手动处理对象,则需要禁止完成。

要遵循的模式是 here

编辑:

我认为您只需要在类层次结构的特定级别实现,如果您有新的东西要在该级别处理,否则我相信基类中的处理将完成您需要的一切。如果您在任何特定类中的实现仅调用 base.Dispose(disposing) 则不需要它,如果它必须执行一些干净的 uop,则调用 base.Dispose() 那么你需要它。

按照您的建议设置 protected 标志应该没问题。

关于c# - 在 C# 中正确处理对象层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987416/

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