【发布时间】:2011-08-18 17:17:33
【问题描述】:
据我了解,C# 中的析构函数语法 (~ClassName) 是一种编写终结器的方法。该方法编译到 IL 后成为 Finalize 方法。
因此,这意味着 C# 编程语言确实支持析构函数,但作为 .net 框架一部分的 Visual C# 不允许程序员使用它。
编辑:我知道可以使用 IDisposable 接口来清理非托管资源。问题不在于它。问题是关于 Visual C# 中是否有析构函数? 因为析构函数的语法是编写终结器的一种方式 => 没有办法定义析构函数本身。
【问题讨论】:
-
是的,你不能在你的代码中使用析构函数。当程序显式释放对象时,将运行析构函数。相比之下,终结器在内部垃圾回收系统释放对象时执行。
-
不,C++ 中的析构函数在 C# 中不存在。你认为你需要一个有什么理由吗?
-
我只是想澄清一下。在文档和文章中经常使用“析构函数”和“终结器”。我看不出它们之间有什么区别,因为我看不到在 C# 中创建析构函数的任何方法。
-
stackoverflow.com/questions/1076965/… 的可能重复项有一些很好的答案。
标签: c# destructor finalizer