2011-01-20 18 views
7

जब मैं एक बयान जैसेक्या वीबी 6 कक्षा में विनाशक है?

Set MyObject = Nothing 

निष्पादित वहाँ वर्ग शुरू हो जाती है अंदर एक विशेष समारोह (यानी कि मैं एक नाशक के रूप में उपयोग कर सकते हैं), डेटाबेस से साफ अप सरणियों, डिस्कनेक्ट जैसी चीज़ों के लिए है, इत्यादि?

उत्तर

16

अनुरूप Class_Initialize, निर्माता को Class_Terminate उपयोग कर सकते हैं, वहाँ भी एक नाशक है इस ऑब्जेक्ट की संदर्भ संख्या शून्य तक पहुंच जाती है, यानी, जब इस ऑब्जेक्ट को संदर्भित करने वाले सभी चर गुंजाइश से बाहर हो गए हैं या किसी अन्य चीज़ पर सेट करने के लिए सेट किए गए हैं (उदाहरण के लिए Nothing)। इस प्रकार, Set MyObject = Nothing केवल विनाशक को कॉल करेगा यदि MyObject इस ऑब्जेक्ट का संदर्भ देने वाला अंतिम चर है।

+0

+1: यह मुझे थोड़ी देर के लिए परेशान कर रहा था। आपने मेरा दिमाग आराम से रखा है: ओ) –

+3

जितना मुझे वीबी 6 का उपयोग करना पसंद है, इसकी डाउनसाइड्स है। उदाहरण के लिए यदि प्रोग्राम क्रैश हो जाता है (अनचाहे अपवाद, एंड स्टेटमेंट निष्पादित इत्यादि) तो इसे कॉल नहीं किया जाता है, इसलिए फ़ाइलों को अनलॉक करने के लिए इस पर भरोसा न करें, अंतिम बफर फ्लश करें आदि – Bob77

+0

धन्यवाद, @ हेनज़ी और @ बॉब रिमेर्समा। –

-1

नहीं। वीबी 6 प्रोग्रामर को स्पष्ट रूप से कुछ लिखने के लिए कोई तंत्र प्रदान नहीं करता है। एक प्रोग्रामर क्या कर सकता है Set MyObject = Nothing और वीबी बाकी का ख्याल रखेगा।

अद्यतन:

Sub Class_Terminate 
    ... ' Put your destructor code here ' 
End Sub 

इस विधि जैसे ही निष्पादित किया जाता है:

एक को संभालने के लिए इस

+2

गलत। जब कोई ऑब्जेक्ट गुंजाइश से बाहर हो जाता है या 'कुछ भी नहीं' पर सेट किया जाता है तो 'Class_Terminate' विधि निकाल दी जाती है। –

+0

क्षमा करें! सही खड़े हो जाओ। – Kangkan