gpt4 book ai didi

C# 类 : Do logging/housekeeping, 我应该使用析构函数吗?

转载 作者:行者123 更新时间:2023-11-30 21:13:26 25 4
gpt4 key购买 nike

我有一个 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.

除了析构函数之外,还有其他管理资源的方法:

Cleaning Up Unmanaged Resources

Implementing a Dispose Method

using Statement (C# Reference)

关于C# 类 : Do logging/housekeeping, 我应该使用析构函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com