.NET中的析构函数

阿尔塔夫·侯赛因

NET已有很长时间了,并且已经开始学习C#。我想几年前我可能已经问过的一件事,得到了答案,但现在已经完全忘记了,因为我隐式使用的东西不是析构函数。在学习C#的过程中,我读了一篇有关如何在C#中创建它们的文章,但是这让我感到疑惑。假设我实例化了一个类,该类具有另一个类的对象。

Class C1
{
  // Do something here
}

Class A
{
  C1 objObjectToClass1 = new C1();
}   

Class Main
{
   A objObjectToClassA = new A();
}

我将其作为对象objObjectToClassAnull因为我一直相信这与object = nothingVB.NET中的等效

objObectToClassA = null;

这个动作还会破坏objObjectToClass1吗?

阿德·斯金格

实际上,是的,它也会破坏objectToClass1,但不会立即破坏在这种情况下,将变量设置为null意味着您的应用程序不再使用该对象,因此可以进行垃圾回收。简单地考虑一下(我确信GC会比这更聪明),一旦objectToClassA被收集,便objectToClass1不再被引用,也将被收集。

乔伊的评论IDisposable绝对值得牢记;尽量不要考虑C#的终结器,因为您无法控制它们的运行时间。使用IDisposable将为您整理整理资源提供所需的控制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章