मैं वीएस में कुछ एएसपी.NET विकास कर रहा हूं और मुझे एक दिलचस्प मामूली कोड सुझाव मिला है (मुझे लगता है कि वे कोडरश से आते हैं लेकिन मैं गलत हो सकता हूं)।मुझे एएसपी.NET नियंत्रणों पर निपटान क्यों करने की आवश्यकता होगी?
जब भी मैं नियंत्रण बना रहा हूं, यह मुझे बताता है कि मुझे उनके लिए "उपयोग" कथन का उपयोग करना चाहिए। मैं थोड़ी उलझन में हूं कि यहां क्या हो रहा है।
using (HtmlTableRow tableRow = new HtmlTableRow())
{
tableRow.Attributes.Add("class", isOddRow ? "OddRow" : "EvenRow");
listingTable.Rows.Add(tableRow);
addCell(tableRow, row, "issueId");
addCell(tableRow, row, "Title");
addCell(tableRow, row, "Type");
addCell(tableRow, row, "Summary");
}
इसलिए मैं उम्मीद कर रहा हूँ कि कथन का उपयोग के अंत में यह tableRow पर निपटाने फोन करेगा: मेरे कोड का उपयोग कर के साथ की तरह कुछ लग रहा है। हालांकि, MSDN लाइब्रेरी में डॉक्स का कहना है:
निपटान विधि अनुपयोगी अवस्था में नियंत्रण छोड़ देता है। इस विधि को पर कॉल करने के बाद, आपको नियंत्रण के सभी संदर्भों को रिलीज़ करना होगा ताकि मेमोरी पर कब्जा कर रहे मेमोरी कचरा संग्रहण द्वारा पुनः दावा किया जा सके।
तो मैं उम्मीद करता हूं कि अब मेरे नियंत्रण संरचना में एक अनुपयोगी वस्तु है ताकि यह तोड़ने या प्रस्तुत करने या कुछ न हो। हालांकि, सबकुछ ठीक काम करता प्रतीत होता है।
तो मैं क्या सोच रहा हूं कि सभी नियंत्रण डिस्पोजेबल क्यों हैं? क्या यह सिर्फ इसलिए है क्योंकि उनमें से कुछ होंगे और उन्हें सभी डिस्पोजेबल माध्यमों का अर्थ होगा कि शीर्ष स्तर पर निपटने के लिए एक कॉल को फिर से सभी बाल नियंत्रणों में पारित किया जा सकता है?
मुझे लगता है कि अगर मैं स्पष्ट रूप से कहता हूं कि नियंत्रण का निपटान यह अनुपयोगी बनाता है ... क्या दस्तावेज़ सिर्फ गलत हैं?
अगर हम "उपयोग" ब्लॉक का उपयोग नहीं कर रहे हैं तो हम अनाथ वस्तुओं (जिसे @Toby उल्लेख किया गया है) को कैसे संभाला जा सकता है? – Lijo