销毁对象的旧实例并在循环中创建新实例

时间:2016-05-15 03:05:58

标签: c# .net object for-loop

在我的代码中,创建一个对象非常昂贵,并且所需的内存非常大。我需要创建大约100次来测试我的产品。如果我这样写的话

for(int i =0; i < length; i++){

Object ob = new Object();
//do something with ob

Object2 ob2 = new Object2();
//do more with ob2

}

每次运行for循环时,这会创建一个新的ob,ob2吗?我需要在执行后在for循环结束时将它们设置为null,否则我的测试结果将出错。根据{{​​3}},它并不重要,所以我有点困惑。

我认为它应该在for循环结束时销毁它们。

2 个答案:

答案 0 :(得分:3)

您无需将obob2设置为空。

在for循环的每次迭代之后,在上面的代码中,您无法再访问上一次迭代中的obob2个对象。这意味着它们将被垃圾收集最终

但是,如果他们实现IDisposable,您应该在每次迭代结束之前处置它们。

答案 1 :(得分:0)

是的,在ob循环的范围内创建和销毁对象ob1for;因此,在每次循环迭代时都会为这两个循环创建新对象。

如果你需要在循环结束循环null,但在下一循环迭代运行之前,则将它们设置为null:

ob = null;
ob1 = null;

然而,似乎没有必要(除了您的原始帖子说您需要这样做)。对象在每个循环迭代结束时被销毁,并且在循环完成后将不存在。