मेरे पास कुछ ऑब्जेक्ट्स हैं जो फ़ाइल पढ़ती हैं, डेटा को सरणी में सहेजती हैं और कुछ ऑपरेशन करती हैं। अनुक्रम ऑब्जेक्ट ए बनाएं, ऑब्जेक्ट ए के साथ काम करें ऑब्जेक्ट बी बनाएं, ऑब्जेक्ट बी के साथ काम करें ... प्रत्येक ऑब्जेक्ट द्वारा पढ़ा गया डेटा लगभग 10 एमबी हो सकता है। इसलिए सबसे अच्छा विकल्प प्रत्येक ऑब्जेक्ट को प्रत्येक के साथ संचालित करने के बाद हटाना होगा। मान लीजिए मैं स्मृति में लगभग 10 एमबी आवंटित करने के लिए मेरा कार्यक्रम, नहीं 10 एमबी * 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 संसाधनों (सॉकेट, धाराओं, ...) का उपयोग की सिफारिश की है, लेकिन मेरी कक्षा में मैं केवल बड़े डेटा सरणियों की है।
एक और तरीका है प्रत्येक वस्तुओं के लिए काम करता है बनाने के लिए होगा (मुझे लगता है जी सी स्वचालित रूप से एक समारोह में बनाए गए एक वस्तु को नष्ट करेगा):
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/)", जहां आम सहमति है "नहीं, उन्हें नहीं करना चाहिए"। –