c# - 完成与处置

标签 c# dispose

为什么有些人使用 Finalize 方法而不是 Dispose 方法?

在什么情况下,您会在 Dispose 方法上使用 Finalize 方法,反之亦然?

最佳答案

终结器方法在您的对象被垃圾回收时调用,您无法保证何时会发生这种情况(您可以强制执行,但这会损害性能)。

另一方面,Dispose 方法旨在由创建您的类的代码调用,以便您可以清理并释放您获得的任何资源(非托管数据、数据库连接、文件句柄等)在代码完成您的对象的那一刻。

标准做法是实现IDisposableDispose 以便您可以在using 语句中使用您的对象。例如 using(var foo = new MyObject()) { }。在您的终结器中,您调用 Dispose,以防调用代码忘记处理您。

关于c# - 完成与处置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/732864/

相关文章:

c# - 如果绑定(bind)不匹配,则将项目添加到 itemssource

dispose - SqlDataReader:在这种情况下,读取器会被关闭吗?

c# - 保证 Dispose 被称为 "when the process is ending"

c# - 亡灵形态仍在产生事件

javascript - 什么是 promise 处理器模式?

java - JFrame 不处理

c# - LINQ-query select statement before order by 反之亦然更好

c# - 我们如何开发旨在防止闰年错误的编码实践?

c# - C# 中 OnnxRuntime 张量的高效位图

c# - `AsyncLocal` 是否也做 `ThreadLocal` 做的事情?