कई बार एक स्पष्ट विधि है, जो संग्रह से सभी वस्तुओं को हटा देती है, क्या ये आइटम भी निपटाए जाते हैं।क्या कॉलिंग साफ़ आइटम को भी डिस्पोजेक्ट करता है?
की तरह,
toolStripMenuItem.DropDownItems.Clear();
के लिए पर्याप्त है, या मैं उस तरह कॉल करने के लिए होना चाहिए:
foreach (ToolStripItem item in toolStripMenuItem.DropDownItems)
{
toolStripMenuItem.DropDownItems.Remove(item);
item.Dispose();
}
संपादित करें: ठीक है ToolStripItem एक उदाहरण नहीं एक सवाल, उन लोगों के लिए जो कहते हैं साफ पर्याप्त है मुझे एक और उदाहरण मिला, टैबकंट्रोल में आइटम संग्रह और स्पष्ट विधि भी है। लेकिन TabControls में जटिल नियंत्रण हो सकते हैं (कम से कम मेरे पास है), जिसे स्पष्ट रूप से निपटाना होगा (भले ही वे जीसी द्वारा किसी बिंदु पर स्वचालित रूप से डिसपॉइड हो जाएं, क्योंकि वे बड़ी मेमोरी लेते हैं)। मुझे लगता है कि वस्तुओं का निपटान करने के लिए सबसे अच्छा जवाब divo टिप्पणी है, और फिर स्पष्ट कॉल करें।
मेरा मानना है कि लेखक एक सी/सी ++ डेवलपर है जो प्रत्येक कार्य में संसाधनों का निपटान करने के लिए "ज़रूरत" है, भले ही .NET में ऐसी आवश्यकता न हो। मुझे संग्रह से * साफ़ * करने के बाद वस्तुओं को अंतिम रूप देने/निपटाने की आवश्यकता के बारे में संदेह है। – serhio
@ सेरियियो - .NET में, अभी भी 'IDISposable' संसाधनों पर 'निपटान()' को कॉल करने का आपका काम है, या यह सुनिश्चित करें कि किसी अन्य कोड द्वारा' निपटान() 'कहा जाता है। –
.NET Reflector का उपयोग करना यह देखने का एक अच्छा तरीका है कि 'ToolStripItemCollection.Clear()' वास्तव में संग्रह वस्तुओं पर 'निपटान' कहता है या नहीं। यदि आप अलग किए गए स्रोत को देखते हैं तो आप देखेंगे कि यह नहीं है। –