![]() |
1
8
终结器是
非常
现在很少需要。他们
习惯于
在直接访问本机资源时是必需的,但现在通常应该使用
乔·达菲有一个 excellent post about this 其中涉及的细节比我自己写的还多,所以去读吧:) 关于术语的简要说明:C#规范的ECMA版本将它们称为终结器;规范的Microsoft版本始终将它们称为析构函数并继续这样做。 |
![]() |
2
2
它们是终结器,不是析构函数。它们通常用于清理非托管资源-如果您编写了自己的文件类,则需要使用终结器清理本机文件句柄。 |
![]() |
3
1
C中很少需要终结器,添加终结器可能会导致垃圾回收器花费较长时间来清理垃圾,因为运行终结器需要额外的过程。相反,您通常应该使用IDisposable模式。
终结器的一个示例用法是,如果怀疑资源泄漏,可以在调试时使用它来检查
|
![]() |
4
1
你什么意思
我认为你发布的现代代码应该拥有一个私有的安全句柄,并称之为
|
![]() |
5
0
C没有“析构函数”,因为你可能在想它们。使用.NET的垃圾收集器,当类超出作用域时,对象收集不会立即发生。 我想你更感兴趣的是IDisposable模式。这是清理对象使用的资源的确定方法。 此外,.NET类可以有“终结器”,在收集对象时执行。如果忽略了对象的原始调用方,则可以使用它来调用dispose。 但是,在类中实现终结器会将其排队以进行GC的特殊处理,并且可能会对性能产生影响。 |
![]() |
6
0
这个
我的意思是你可以实现
|
![]() |
Arnish Grover · 为什么这里两次调用析构函数?[副本] 7 年前 |
![]() |
hvertous · 在析构函数方法中引发异常 7 年前 |
![]() |
Phi Truong · 链表析构函数C++ 7 年前 |
![]() |
allo · C++程序挂起在向量析构函数中 7 年前 |
|
user8185371 · 释放对象的内存与终止内务管理? 7 年前 |
![]() |
Peter Hwang · 销毁列表结构的全局数组 8 年前 |