从函数返回而不破坏对象

时间:2009-05-07 05:24:44

标签: c# garbage-collection

我在C#2.0中有一个名为Foo()的函数,它返回boolean类型的值。我在函数中实例化一个对象,我没有在返回布尔值之前销毁它。我想知道是否有必要在返回值之前销毁创建的对象?

感谢。

4 个答案:

答案 0 :(得分:5)

不,不是。如果您使用Foo方法创建值类型,它们将位于堆栈中,因此在堆栈展开时进行清理。如果您创建引用类型,则对这些实例的引用将超出范围,因为该方法将退出,因此实例将用于垃圾回收。

答案 1 :(得分:1)

没有。除非有问题的对象实现了IDisposable,在这种情况下将其包装在using(){}语句

答案 2 :(得分:0)

在C#中,所有对象都是自动垃圾收集的,基本上没有办法显式释放对象,所以不需要手动销毁对象。

如果您的对象拥有资源,您希望确保释放资源,但您不需要(不能)销毁该对象。

答案 3 :(得分:0)

如果在i / o或db对象的情况下使用dispose方法会更好。否则,当您尝试修改先前引用但未释放的文件时,可能会发生异常。

您还可以为对象指定null以删除引用。