नहीं, नेट और हेन्स सी # कचरा संग्रह स्मृति प्रबंधन पर निर्भर करता है। तो विनाशकों (जो नेट में फाइनलाइजर्स कहा जाता है) तब तक नहीं कहा जाता है जब तक कि जीसी वस्तुओं को नष्ट करने के लिए उचित न हो।
इसके अतिरिक्त: सी # में अधिकांश "नियमित" वस्तुओं में विनाशक नहीं होते हैं। यदि आपको विनाशक पैटर्न की आवश्यकता है तो आपको को Dispose Pattern के साथ लागू करना चाहिए। डिस्पोजेबल ऑब्जेक्ट्स पर आपको यह भी सुनिश्चित करना चाहिए कि निपटान विधि को using keyword या सीधे विधि को कॉल करने के साथ कहा जाता है।
आगे (उम्मीद है) स्पष्ट करने के लिए: नेटिन में निर्धारिक निपटान उपयोगी है उदा। जब आपको उन संसाधनों को स्पष्ट रूप से मुक्त करने की आवश्यकता होती है जिन्हें .NET रनटाइम द्वारा प्रबंधित नहीं किया जाता है। ऐसे संसाधनों के उदाहरण फ़ाइल हैंडल, डेटाबेस कनेक्शन इत्यादि हैं। आमतौर पर यह महत्वपूर्ण है कि इन संसाधनों को जल्द से जल्द मुक्त कर दिया जाए क्योंकि उन्हें अब आवश्यकता नहीं है। इस प्रकार हम जीसी को मुक्त करने के लिए इंतजार नहीं कर सकते हैं।
नेट जीसी की गैर-निर्धारिती दुनिया में निर्धारिक निपटान (सी ++ के दायरे के व्यवहार के समान) प्राप्त करने के लिए, नेट क्लास IDISposable इंटरफेस पर भरोसा करते हैं। Dispose Pattern से उधार, यहाँ कुछ उदाहरण हैं:
सबसे पहले, एक डिस्पोजेबल संसाधन instantiating और फिर दे वस्तु क्षेत्र से बाहर जाना, यह जीसी करने के लिए वस्तु निपटान के लिए छोड़ देंगे:
1. {
2. var dr = new DisposableResource();
3. }
करने के लिए
1. {
2. var dr = new DisposableResource();
3.
4. ...
5.
6. dr.Dispose();
7. }
लेकिन क्या कुछ लाइन 2 और 6 के बीच गलत हो जाता है, तो: समस्याओं का समाधान कर इस हम स्पष्ट रूप से वस्तु निपटान कर सकते हैं? निपटान नहीं किया जाएगा। आगे यह सुनिश्चित करने के निपटान के अंत में किसी भी अपवाद हम निम्न कर सकते हैं की परवाह किए बिना कहा जाएगा:
1. var dr = new DisposableResource();
2. try
3. {
4. ...
5. }
6. finally
7. {
8. dr.Dispose();
9. }
के बाद से इस पैटर्न अक्सर की जरूरत है, सी # कीवर्ड का उपयोग चीजों को आसान बनाने के भी शामिल है। निम्नलिखित उदाहरण उपरोक्त के बराबर है:
1. using (var dr = new DisposableResource())
2. {
3. ...
4. }
स्रोत
2009-09-26 09:48:52
@RA के साथ है आईआरएल करने के लिए काम करता है :) अब कुछ उदाहरण जोड़ा गया है, उम्मीद है कि यह और भी स्पष्ट करता है। –