2013-03-09 64 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來說是相對昂貴的操作。構造一個對象併爲其成員賦值不同於銷燬對象和構造。摧毀一個對象並重新創建它相當於每當新租戶搬進時將房屋撕裂並重建它。