c# - If a generic collection is instantiated to contain iDisposable items, do the items get disposed? -
उदाहरण के लिए:
Queue & lt; System.Drawing.SolidBrush & gt; BrushQ = नई कतार & lt; सिस्टम। ड्रॉइंग। सॉलिडब्रिश & gt; (); ... ब्रश Q.Clear ();
अगर मैं स्पष्ट रूप से प्रत्येक आइटम को डील नहीं करता और व्यक्तिगत रूप से उनको निपटाना नहीं करता, तो क्या शेष कॉल करें (साफ़) कॉल करते समय निकल जाते हैं? कतार में कचरा एकत्र किए जाने के बारे में कैसे?
उत्तर मानना "नहीं" है, तो सबसे अच्छा अभ्यास क्या है? क्या आपको हमेशा कतार के माध्यम से दोहराते हैं और प्रत्येक आइटम का निपटान करना है?
यह बदसूरत हो सकता है, खासकर अगर आपको कोशिश करनी है तो लगभग प्रत्येक के निपटान के लिए, यदि कोई अपवाद डालता है।
संपादित करें
ऐसा लगता है कि बोझ सामान्य उपयोगकर्ता के संग्रह में है, यह जानने के लिए कि यदि आइटम डिस्पोजेबल हैं (जिसका अर्थ है कि वे उपयोग करने की संभावना है अप्रबंधित संसाधन जो कचरा कलेक्टर द्वारा साफ नहीं किए जाएंगे), तो:
- जब आप संग्रह से किसी वस्तु को निकालते हैं, तो सुनिश्चित करें कि आप इसे विस्थापित करें ()।
- स्पष्ट नहीं बोलें ()। संग्रह के माध्यम से दोहराएं और प्रत्येक आइटम का निपटान करें।
हो सकता है कि जेनेरिक संग्रहों के लिए दस्तावेज का उल्लेख करना चाहिए।
आप उन्हें निपटाए जाने की उम्मीद कब करते हैं? संग्रह कैसे पता चलेगा कि इसमें वस्तुओं के अन्य संदर्भ क्या हैं?
Comments
Post a Comment