.NET में ऑब्जेक्ट्स को नल / कुछ भी नहीं करने के बाद सेट करना

एक बार जब आप उनके साथ समाप्त कर लेंगे तो क्या आप सभी ऑब्जेक्ट्स को null ( कुछ भी नहीं में VB.NET) सेट कर सकते हैं?

मैं समझता हूं कि .NET में कुछ ऑब्जेक्ट्स को जारी करने के लिए IDisposable इंटरफ़ेस को लागू करने वाले ऑब्जेक्ट्स के किसी भी उदाहरण का निपटान करना आवश्यक है, हालांकि ऑब्जेक्ट डिस्पोजेड होने के बाद भी कुछ हो सकता है (इसलिए isisposed है प्रपत्रों में संपत्ति), तो मुझे लगता है कि यह अभी भी स्मृति में या कम से कम भाग में रह सकता है?

मुझे यह भी पता है कि जब कोई वस्तु दायरे से बाहर हो जाती है तो उसे कचरा कलेक्टर के अगले पास के लिए तैयार संग्रह के लिए चिह्नित किया जाता है (हालांकि इसमें समय लग सकता है)।

तो इस दिमाग में इसे null पर सेट करने से सिस्टम को स्मृति जारी करने की गति तेज हो जाएगी क्योंकि इसे काम नहीं करना है कि यह अब दायरे में नहीं है और क्या वे किसी भी दुष्प्रभाव हैं?

एमएसडीएन लेख कभी भी उदाहरणों में ऐसा नहीं करते हैं और वर्तमान में मैं ऐसा करता हूं जैसा मैं नहीं कर सकता नुकसान देखें। हालांकि मैं राय के मिश्रण में आया हूं इसलिए कोई टिप्पणी उपयोगी है।

0
जोड़ा संपादित
विचारों: 6
+1 महान सवाल है। क्या कोई ऐसी परिस्थिति को जानता है जिसके तहत संकलक पूरी तरह से असाइनमेंट को अनुकूलित कर देगा? यानी किसी ने अलग-अलग परिस्थितियों में एमएसआईएल को देखा है और आईएल को ऑब्जेक्ट को शून्य (या इसकी कमी) के लिए सेट करने के लिए नोट किया है।
जोड़ा लेखक Tim Medora, स्रोत

3 उत्तर

एकमात्र समय जब आप एक चर को शून्य पर सेट करना चाहते हैं, तब चर चरम से बाहर नहीं जाता है और अब आपको इसके साथ जुड़े डेटा की आवश्यकता नहीं होती है। अन्यथा कोई ज़रूरत नहीं है।

0
जोड़ा
यह सच है, लेकिन इसका मतलब यह भी है कि आपको शायद अपना कोड दोबारा करना चाहिए। मुझे नहीं लगता कि मुझे कभी भी इसके इच्छित दायरे के बाहर एक चर घोषित करने की आवश्यकता है।
जोड़ा लेखक Karl Seguin, स्रोत
यदि "चर" को ऑब्जेक्ट फ़ील्ड को शामिल करने के लिए समझा जाता है, तो यह उत्तर बहुत समझ में आता है। ऐसे मामले में जहां "चर" का अर्थ केवल "स्थानीय चर" (एक विधि का) है, तो हम शायद यहां विशिष्ट मामलों के बारे में बात कर रहे हैं (उदाहरण के लिए एक विधि जो सामान्य से अधिक समय तक चलती है)।
जोड़ा लेखक stakx, स्रोत

कुछ ऑब्जेक्ट .dispose() विधि मानते हैं जो संसाधन को स्मृति से निकालने के लिए मजबूर करता है।

0
जोड़ा
इस बात को ध्यान में रखते हुए कि निर्धारणा केवल प्रबंधित संसाधनों पर लागू होती है, न कि अप्रबंधित लोगों (यानी स्मृति)
जोड़ा लेखक nicodemus13, स्रोत
नहीं, यह नहीं करता; निपटान() नहीं ऑब्जेक्ट एकत्र करता है - इसका उपयोग निर्धारिती साफ करने के लिए किया जाता है, आमतौर पर अप्रबंधित संसाधनों को जारी करना।
जोड़ा लेखक Marc Gravell, स्रोत

शून्य वस्तुओं नहीं है। आप http://codebetter.com/blogs/karlseguin/archive/2008/04/27/foundations-of-programming-pt-7-back-to-basics-memory.aspx और अधिक के लिए जानकारी, लेकिन चीजों को शून्य करने के लिए सेट करना आपके कोड को गंदे सिवाय इसके अलावा कुछ भी नहीं करेगा।

0
जोड़ा
साझा लिंक में स्मृति के बारे में अच्छा और विस्तार स्पष्टीकरण
जोड़ा लेखक user2323308, स्रोत