c# - 为什么不在 C# 中使用静态析构函数

标签 c#

我很想知道为什么 C# 中不允许使用静态析构函数。请注意,我并不是假设它们以任何其他语言存在。

我可以上这样的课。

 class A
 {
      static A()
      {
         // here I can load a resource that will be avaliable for all instances 
         // of this class.
      }
 }

当应用程序结束时,我可能需要释放资源。

因此,静态析构函数的语义可能如下:在应用程序结束时调用,用于包含它并在应用程序中初始化的类。

最佳答案

您的语义是一种可能,但我想您还没有检查它对语言的所有影响。在我所知道的大多数(或多或少)动态语言中,销毁是一个看起来要复杂得多的主题。当类不再被引用时,为什么不调用析构函数呢?或者如果组件被卸载?应该以什么顺序调用析构函数? ...?

如果您只想在应用程序结束时执行一些代码,请查看 .Net 文档。有更简单、更可靠的方法可以做到这一点。

关于c# - 为什么不在 C# 中使用静态析构函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12709276/

相关文章:

c# - 尝试并发更新(AddToSet)到 mongodb 中的集合并且它不能正常工作

c# - 错误 : Non-invocable member 'Vector2' cannot be used like a method

c# - WPF 文本框和空格

c# - 使用 ASP.net 执行 INSERT 命令

C# - : String. Contains() 或 Regex.isMatch() 哪个更快?

c# - 可移植类库中的 Thread.Sleep()

javascript - 统一: AddExplosionForce to 2D

c# - 将右侧 UITableViewCell 中的标签与自动布局对齐

c# - 将一个 UTF8 编码数据的内存流写入另一个 C# 的末尾

c# - 设置与房间相关的 ExtendedProperties