- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C# 类。每当这个类不再被使用时,我想做一些事情。例如记录当前状态等。
我想确保每次不再使用该类时都会运行此方法。我不想只使用一个简单的方法,因为我不能确定每个用户都在调用它。
我没有要清理的资源(如文件句柄)。
使用析构函数是最好的方法吗?
“未使用”是指(例如):
最佳答案
这取决于。 C# .NET 使用垃圾收集器为您隐式清理对象。通常,您无法控制对象的清理 - 垃圾收集器负责。如果愿意,可以在类中实现析构函数,但可能会影响性能。 MSDN 在 destructors 上有此说法:
In general, C# does not require as much memory management as is needed when you develop with a language that does not target a runtime with garbage collection. This is because the .NET Framework garbage collector implicitly manages the allocation and release of memory for your objects. However, when your application encapsulates unmanaged resources such as windows, files, and network connections, you should use destructors to free those resources. When the object is eligible for destruction, the garbage collector runs the Finalize method of the object.
最后是性能:
When a class contains a destructor, an entry is created in the Finalize queue. When the destructor is called, the garbage collector is invoked to process the queue. If the destructor is empty, this just causes a needless loss of performance.
除了析构函数之外,还有其他管理资源的方法:
关于C# 类 : Do logging/housekeeping, 我应该使用析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862561/
我是一名优秀的程序员,十分优秀!