gpt4 book ai didi

c# - C# 中带有 Dispose() 的终结器

转载 作者:太空狗 更新时间:2023-10-30 00:12:32 24 4
gpt4 key购买 nike

请参阅 MSDN 中的代码示例:( http://msdn.microsoft.com/en-us/library/b1yfkh5e(v=VS.100).aspx )

// Design pattern for a base class.
public class Base: IDisposable
{
private bool disposed = false;

//Implement IDisposable.
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// Free other state (managed objects).
}
// Free your own state (unmanaged objects).
// Set large fields to null.
disposed = true;
}
}

// Use C# destructor syntax for finalization code.
~Base()
{
// Simply call Dispose(false).
Dispose (false);
}
}

在 Dispose() 实现中它调用 GC.SupressFinalize();,但提供一个析构函数来完成对象。

调用 GC.SuppressFinalize() 时为析构函数提供实现有什么意义?

只是对意图是什么感到有点困惑?

最佳答案

有两种情况:

  • 您的代码调用 Dispose(首选)并取消 Finalizer,从而消除开销。
  • 您的代码“泄漏”了对象,GC 调用了终结器。

关于c# - C# 中带有 Dispose() 的终结器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4193755/

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