2016-05-15 100 views
0

在我的代码中,创建对象非常昂贵且所需的内存非常大。我需要为测试我的产品创建约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,否则我的测试结果会出错。根据this这并不重要,所以我有点困惑。

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

回答

2

您不需要将obob2设置为空。

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

但是,如果他们实施IDisposable,则应在每次迭代结束前处理它们。

0

是的,对象obob1在您的for循环范围内创建并销毁;所以每个循环迭代都会创建新的对象。

如果你需要他们null在环路中循环的结束,而是一个循环周期运行前,然后将它们设置为null:

ob = null; 
ob1 = null; 

然而,似乎没有必要(除你原来的帖子说你需要这样做)。对象在每个循环迭代结束时被销毁,并且一旦循环完成就不会存在。