c# - 如果类中没有 Finalizer,GC.SuppressFinalize 是否没用?
问题描述
在 Class 中使用 Dispose 模式时,我看到没有 Finalizer 存在,但 Dispose 方法中仍在使用 GC.SuppressFinalize() 。
这个调用是无用的还是类中运行时隐式提供了终结器?
解决方案
您看到的是哪种 Dispose 模式?一个用于sealed
类还是一个用于为继承而设计的类?
对于后者,没有真正的方法可以知道派生类是否会有终结器,因此实现的基类Dispose
仍然应该调用SuppressFinalize
.
推荐阅读
- xml - Spring with XML - 返回列表外的元素
- python - 如何将 Azure Python SDK 异常添加到 try/except 语句?
- azure - 使用 kubectl 在 AKS 集群中创建机密时出错
- sql - 如何在MSSQL中将多行合并为单行
- python - 在 VS Code 笔记本中动画/更新 matplotlib 图
- java - spring 与junit一起使用时的不同行为
- c - 在 C 中传递动态结构后无法写入内存
- java - 此版本中使用了弃用的 Gradle 功能,使其与带有 Minecraft Forge 1.12.2 的 Gradle 5.0 不兼容
- java - 不允许使用数组初始化器(扫雷的副本)
- opencv - 恢复具有已知 3d 和 2d 点的投影矩阵