2013-03-09 86 views
-4

情况1:关于对象的查询?

for(int =0;i<1000;i++) 
{ 
Datatable dt=new Datatable(); 
//Perform some operation 
dt.Dispose(); 
} 

情况2:

Datatable dt=new Datatable(); 
for(int =0;i<1000;i++) 
{ 
//Perform some operation 
dt=null; 
} 

我想在一个循环中,这种情况下,会更有效地使用的数据表: 创建和在环路中,每次破坏的对象或在循环之前创建它?

+0

请参阅http://stackoverflow.com/a/407294/222714 – MikeM 2013-03-09 05:09:04

回答

0

试试这个

编辑:如果你想保持相同的结构,那么你可以在每次循环清除项目

Datatable dt =new Datatable(); 
//add columns to your datatable 
for(int i=0;i<1000;i++) 
{  
    dt.Items.Clear(); 
    //your other code 
} 
+0

rs:表结构将保持不变时间。在每次迭代中创建新的dt对象会不错? – noviceprogrammer 2013-03-09 04:56:56

+0

如果表格结构相同,则不要使用新的关键字........,您可以删除所有行以进行下一次迭代。 – andy 2013-03-09 05:00:48

+0

@noviceprogrammer,检查我更新的答案 – 2013-03-09 05:05:42

0

案例2更有效,但它应该有如下

Datatable dt = null; 
for(int i = 0; i < 1000; i++) 
{  
dt = new Datatable(); 
//Perform some operation 
dt = null;//or dt.Dispose(); 
} 
+0

谢谢....但你能解释它...它会更有帮助。 – noviceprogrammer 2013-03-09 04:54:49

+0

检查[this](http://stackoverflow.com/questions/7884083/c-declaring-a-variable-inside-for-loop-will-it-decrease-performance) – andy 2013-03-09 04:59:08

0

案例2会更有效率。对象构造函数对于CPU来说是相对昂贵的操作。构造一个对象并为其成员赋值不同于销毁对象和构造。摧毁一个对象并重新创建它相当于每当新租户搬进时将房屋撕裂并重建它。