gpt4 book ai didi

c# - 基类的处理顺序

转载 作者:行者123 更新时间:2023-12-05 00:29:43 27 4
gpt4 key购买 nike

当派生类覆盖 Dispose 时,是否应该在派生类处理任何本地资源之前先调用基类 Dipose?

我问的原因是因为我们团队中的某个人对每种情况都说"is",我正在尝试确定这是个好主意还是只是“ cargo 崇拜”编程,无论哪种方式我都没有强烈的看法。

前:

 public override void Dispose()
{
base.Dispose();

if (!_isDisposed)
{
_isDisposed = true;

if (_foo != null)
{
_foo.Dispose();
}
}
}

后:
 public override void Dispose()
{
if (!_isDisposed)
{
_isDisposed = true;

if (_foo != null)
{
_foo.Dispose();
}
}

base.Dispose();
}

注意:我不是在寻找如何实现基本的处置模式,而是从人们的经验中寻求更多的澄清。

最佳答案

“这取决于”

你不能对此有一个硬性规定,因为你需要调用 dispose 的顺序将取决于类的实现。

有时您可能想要在开始时,有时在结束时,有时在中间。大多数时候,这可能无关紧要。

一般来说,人们似乎首先调用它(在没有任何其他理由在不同时间调用它的情况下)。

倾向于首先调用它的一个原因是,如果需要,派生类有机会在之后做特殊的事情。

关于c# - 基类的处理顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17087621/

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