有没有办法在对象被销毁时运行一些代码?

发布于 2024-12-07 09:43:09 字数 73 浏览 0 评论 0原文

在 C# 中,我知道我的对象在超出范围时会被垃圾回收,并且不再有指向它的指针/引用。当垃圾收集发生时,有没有办法运行一些自定义代码?

In C# I know that my objects are garbage collected when they go out of scope and there are no more pointers/references to it. Is there a way to run some custom code when this garbage collection occurs?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

神仙妹妹 2024-12-14 09:43:09

是的,它称为终结器。终结器http://msdn.microsoft.com/en-us/library/wxad3cah.aspx

许多 C# 文档都混淆地使用了术语“析构函数”。尽管析构函数的 C++ 命名在 C# 中用于终结器,但语义完全不同。如果您始终使用“终结器”这个词,就不会有任何混淆。

Yes, it's called a finalizer. http://msdn.microsoft.com/en-us/library/wxad3cah.aspx

Much of the C# documentation confusingly uses the term "destructor". Although the C++ naming for a destructor is used in C# for a finalizer, the semantics are totally different. If you consistently use the word finalizer, there won't be any confusion.

行至春深 2024-12-14 09:43:09

是的。您可以为您的类定义一个终结器:

class Lava
{
    ~Lava()    // Finalizer -- runs when object is collected
    {
        // TODO: Clean up molten rock
    }
}

Yes. You can define a finalizer for your class:

class Lava
{
    ~Lava()    // Finalizer -- runs when object is collected
    {
        // TODO: Clean up molten rock
    }
}
旧情别恋 2024-12-14 09:43:09

您可以使用Finalizer/Destructor (~) 方法。

MSDN - Object.Finalize

You can use the Finalizer/Destructor (~) method.

MSDN - Object.Finalize

作死小能手 2024-12-14 09:43:09

C# 中没有相当于析构函数的东西 - 您能做的最好的事情就是添加 终结器(具有析构函数语法),然后安排在 GC 正常收集对象时在专用终结器线程上执行 - 这确实会导致额外的开销保持您的对象实例的存活时间比应有的时间长。仔细考虑用例。

There is no equivalent of a destructor in C# - the best you can do is add a finalizer (which has destructor syntax) which is then scheduled for execution on a dedicated finalizer thread when the GC would have normally collected your object - this does cause additional overhead though and keeps your object instance alive longer than it should have been. Consider the use case carefully.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文