2017-02-23 17 views
-3

假設我的代碼:在循環內重新創建一個大的位圖之前需要Dispose()嗎?

void Method1() { 
    Bitmap bitmap1; 
    foreach (string name in OpenFileDialog1.FileNames) { 
     bitmap1 = new Bitmap(name); 
     ... // process bitmap 
     bitmap1.Dispose(); 
    } 
} 

是Dispose()方法的循環中有必要嗎?

+3

的可能的複製[.Net和位圖不通過GC當沒有存儲器左自動設置](http://stackoverflow.com/a/5838632/448144)標記的答案應解釋爲什麼你需要處理它。 – Nope

+4

是的,但你應該使用'using'來代替。 –

回答

0

噢。該位圖對象正在文件上打開存儲器映射!作爲該代碼結構

更好方法可以使用using

void Method1() { 
    foreach (string name in OpenFileDialog1.FileNames) { 
     using (var bitmap1 = new Bitmap(name)) 
     { 
      ... // process bitmap 
     } 
    } 
} 
+1

'using'似乎已經被鏈接的副本覆蓋了►http://stackoverflow.com/a/5838649/448144 – Nope

+0

爲什麼用'var'而不是'Bitmap'來聲明bitmap1? –

+1

@PauloBarretto:我在decl時候總是使用var。類型系統會每次推斷出正確的類型。 – Joshua

相關問題