0

在参考这篇讨论 C++ CLI 中析构函数和终结器的区别的文章后,我想知道为什么编译器会添加一些指令。抑制析构函数中的finalize?

剂量 finalize 函数不代表“最终,它将被 GC 调用”?

我们是否应该在析构函数和终结器中添加相同的“释放资源”代码?

4

1 回答 1

0

当您编写析构函数(C# 中的 Dispose 方法)时,您应该完成清理对象的所有工作。使用正确编写的析构函数,终结器将无事可做,因此编译器会抑制它。

在 C# 中,模式是编写一个 Dispose(bool) 方法,并让布尔值指示您是在处理还是完成。在 C++/CLI 中,编译器编写该方法,因此不允许。如果您不想重复代码,我相信您可以简单地从析构函数中调用终结器。

于 2012-07-24T16:21:13.393 回答