gpt4 book ai didi

c# - 终结器中处置的资源与处置中释放的资源有什么区别

转载 作者:太空宇宙 更新时间:2023-11-03 20:52:01 28 4
gpt4 key购买 nike

这是这个问题的后续问题:

Finalize/Dispose pattern in C#

所以我明白,如果我正在创建一个使用非托管资源的类,我应该处置它们。链接问题中的答案说终结器处理非托管资源。但是,Dispose(Boolean) 方法也会处理非托管资源:

protected virtual void Dispose(bool disposing)
{
if (disposing)
{
// get rid of managed resources
}
// get rid of unmanaged resources
}

那么finalizer的处置和dispose方法的处置有什么区别呢?

最佳答案

你会使用它的唯一原因(而且它极具争议性)。

  1. 终结器允许在对象被垃圾收集器删除之前清除它。 (也就是说,GC负责调用它,并从内存中清除对象)如果开发者忘记调用对象的Dispose()方法,那么将有可能释放非托管对象资源,从而避免泄漏。

不这样做的原因有很多,弄错的方法也有很多。简而言之,很少有您需要或想要这样做的理由

关于c# - 终结器中处置的资源与处置中释放的资源有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54304134/

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