我有一些讀取文件的對象,將數據保存在數組中並進行一些操作。序列是創建對象A,使用對象A操作。創建對象B,使用對象B操作... 每個對象讀取的數據可能大約爲10 MB。所以最好的選擇是在每個對象操作後刪除每個對象。讓說,我想我的計劃分配大約10 MB內存,10MB不是* 1000個=對象1GB需要刪除對象:實現在函數中處理或創建對象?
的對象是這樣的:
class MyClass
{
List<string[]> data;
public MyClass(string datafile)
{
using (CsvReader csv = new CsvReader(new StreamReader(datafile), true))
{
data = csv.ToList<string[]>();
}
}
public List<string> Operate()
{
...
}
}
我的問題是:我應該執行處置?而這樣做:
List<string> results = new List<results>();
using (MyClass m = new MyClass("fileM.txt"))
{
results.AddRange(m.Operate());
}
using (MyClass d = new MyClass("fileD.txt"))
{
results.AddRange(d.Operate());
}
...
從來就讀,實施一次性的,當您使用unmmanaged資源(套接字,流,...)的建議,但在我的課,我只有大數據陣列。
另一種方式是爲每個對象創建函數(我想GC將刪除的功能自動創建一個對象):
List<string> results = new List<results>();
results.AddRange(myFunction("fileM.txt"));
results.AddRange(myFunction("fileD.txt"));
public List<string> myFunction(string file)
{
MyClass c = new MyClass(file);
return results.AddRange(c.Operate());
}
我編輯了你的標題。請參見「[應的問題包括‘標籤’,在他們的頭銜?(http://meta.stackexchange.com/questions/19190/)」,這裏的共識是「不,他們不應該」。 – 2013-02-22 02:04:00