gpt4 book ai didi

c# - Dispose(bool) 中的 disposed 标志到底是什么意思?

转载 作者:行者123 更新时间:2023-11-30 19:36:03 28 4
gpt4 key购买 nike

如以下示例实现即 https://learn.microsoft.com/en-us/dotnet/standard/garbage-collection/implementing-dispose有一个标志指示冗余调用。在示例中,它始终位于 Dispose(bool disposing) 方法的最后一行。这是否意味着它表示所有内容都已处理或只是简单地保护方法执行一次运行?

private bool disposed = false; // To detect redundant calls

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
if (this.cache != null)
{
this.cache.Dispose();
}
}

disposed = true;
}
}

该实现仍然正确吗?

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
disposed = true;

if (disposing)
{
if (this.cache != null)
{
this.cache.Dispose();
}
}
}
}

最佳答案

there is a flag indicating redundant calls. In examples it is always in last line in Dispose(bool disposing) method. Does it mean that it indicates that everything has been disposed or just simple protect the method execution to be run once?

模式中有两个标志:disposingdisposed

disposed 开始为 false,并在对象被释放后立即设置为 true。 disposed 的目的是使 Dispose 幂等。也就是说:两次调用 Dispose 应该始终是合法的,而第二次应该什么都不做。

模式中 protected Dispose(bool) 方法有两个调用者:常规的Dispose 方法和终结器。模式是 Dispose 调用 Dispose(true) 终结器调用 Dispose(false) 以便方法的实现知道是否使用用于清理的常规规则或终结器规则。

关于c# - Dispose(bool) 中的 disposed 标志到底是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48869026/

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