我在C#2.0中有一个名为Foo()的函数,它返回boolean类型的值。我在函数中实例化一个对象,我没有在返回布尔值之前销毁它。我想知道是否有必要在返回值之前销毁创建的对象?
感谢。
答案 0 :(得分:5)
不,不是。如果您使用Foo方法创建值类型,它们将位于堆栈中,因此在堆栈展开时进行清理。如果您创建引用类型,则对这些实例的引用将超出范围,因为该方法将退出,因此实例将用于垃圾回收。
答案 1 :(得分:1)
没有。除非有问题的对象实现了IDisposable,在这种情况下将其包装在using(){}语句
中答案 2 :(得分:0)
在C#中,所有对象都是自动垃圾收集的,基本上没有办法显式释放对象,所以不需要手动销毁对象。
如果您的对象拥有资源,您希望确保释放资源,但您不需要(不能)销毁该对象。
答案 3 :(得分:0)
如果在i / o或db对象的情况下使用dispose方法会更好。否则,当您尝试修改先前引用但未释放的文件时,可能会发生异常。
您还可以为对象指定null以删除引用。