【发布时间】:2012-03-16 08:06:08
【问题描述】:
我想知道析构函数和垃圾收集器有什么区别,析构函数用于在应用程序生命周期结束时处理所有未使用的对象,垃圾收集器的使用也是如此,垃圾收集器可以手动在应用程序结束时调用或完成,与析构函数相同,都是可选的,用于处理未引用的对象,谁能指出我的确切区别是什么
【问题讨论】:
-
.Net(像大多数垃圾收集语言一样)没有析构函数。在 C++/CLI 中,它们是使用终结器伪造的。
-
@Billy 在 C# 语言规范中使用了术语“终结器”和“析构函数”来指代同一事物。
-
@MarcGravell:这很奇怪;它们确实具有完全不同的语义。一个概念是确定性地运行的;另一个不是。不过,我在 CLR 级别上的思考要多于 C# 级别;毕竟问题是 .Net 而不是 C#,就 CLR 而言,析构函数不存在。
-
@Billy 确实如此,这很可能就是术语随时间变化的原因。但事实仍然存在:这些术语因此变得有点但可以互换。
-
@MarcGravell:至少在 C# 圈子里 :) (如果我说终结器和析构函数对于 C++/CLI 人来说是可以互换的,我可能会被枪杀)
标签: .net garbage-collection destructor