gpt4 book ai didi

c# - C# 中是否需要析构函数?

转载 作者:太空狗 更新时间:2023-10-30 00:02:56 29 4
gpt4 key购买 nike

我有一个问题。我是计算机科学专业的一年级学生。通常我在类里面很好奇,但我的老师并不总是有答案,或者并不总是知道答案。 C# 中是否需要析构函数?我的意思是,如果我必须像通常使用构造函数那样实现析构函数方法,这是一个好习惯还是我可以避免它并且垃圾收集器会为我做这件事?

最佳答案

析构函数(或终结器)在语言中很好用 - 但您几乎应该永远不要使用它们。基本上,只有在非托管资源上有直接句柄时才需要它们,不仅这种情况非常罕见,而且使用 SafeHandle因为一个很小的间接级别无论如何是一个更好的主意(它为你处理清理)。参见 Joe Duffy's blog post on the topic了解更多详情。

对于它的值(value),除了测试一些奇怪的行为或其他行为外,我不记得上次编写终结器是什么时候了。

绝大多数时候,生活更简单:

  • 垃圾收集器可以处理内存资源清理
  • 如果您在方法中本地使用非托管资源(例如文件),请使用 using 语句确保在使用完后释放它
  • 如果您需要在您的类型中将非托管资源(或任何其他实现了 IDisposable 的资源)作为实例变量 的引用,您的类型本身应该实现 IDisposable。 (我尽量避免这种情况。即使必要的,你可以通过让你的类密封来简化生活,在这一点上你至少不需要担心其他子类有更多非托管状态需要清理。)

关于c# - C# 中是否需要析构函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23026890/

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