gpt4 book ai didi

c# - 在哪里调用基本方法?

转载 作者:行者123 更新时间:2023-11-30 20:54:28 26 4
gpt4 key购买 nike

编辑:对于急切的编辑,请阅读完整的问题此外,因为这个问题不仅仅是关于处置

到目前为止我已经看到了this :

protected override Dispose(bool disposing)
{
base.Dispose(disposing);
if (disposing)
c.Dispose()
}

this :

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources.
}

// There are no unmanaged resources to release, but
// if we add them, they need to be released here.
}
disposed = true;

// If it is available, make the call to the
// base class's Dispose(Boolean) method
base.Dispose(disposing);
}

Microsoft 说 CA2215:Dispose 方法应该调用基类 disposehere .此外,由于这个问题只是关于处置,here是 Microsoft 在最后一行调用 base 的另一个示例。

如果有的话,哪个是正确的/最常见的/更好的?

最佳答案

你的第二个片段是有疑问的,这取决于 disposed 是否是来自基类的 protected 字段。

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources.
}
}
disposed = true;
base.Dispose(disposing); // wrong if base.Disposing() depends on disposed
}

要考虑的问题是基类和派生类之间的异常和依赖关系。所以使用 try/finally 并将碱基调用放在最后。最一般的模式看起来像:

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Dispose managed resources.
}
}
base.Dispose(disposing);
disposed = true; // inherited or local field
}

关于c# - 在哪里调用基本方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19078763/

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