एक और तरीका है एक वस्तु की उचित विनाश सुनिश्चित करने के लिए, (यानी एक स्थानीय चर घोषित नहीं करते हैं) एक With
ब्लॉक करने के लिए अपने ऑब्जेक्ट संदर्भ उपज के लिए है:
Sub Test()
With New FileSystemObject
MsgBox .Drives.Count
End With
End Sub
वस्तु ही कभी With
ब्लॉक के अंदर मौजूद है, और जब निष्पादन End With
टोकन तक पहुँच जाता है, यदि आप इसे एक कस्टम वर्ग मॉड्यूल के साथ की कोशिश आपको पता चलेगा कि वर्ग 'Class_Terminate
हैंडलर, चलाता है प्रभावी रूप से उचित विनाश की पुष्टि वस्तु का।
As New
मोड़, as was already explained के लिए, यदि आप Nothing
कि गुंजाइश के अंदर करने के लिए ऑब्जेक्ट संदर्भ सेट करना चाहते हैं, As New
साथ यह घोषणा नहीं करते हैं, क्योंकि VBA Nothing
को ऑब्जेक्ट संदर्भ सेट हो जाएगा, लेकिन यह भी खुशी से होगा ("मददगार") जैसे ही आप इसे दोबारा संदर्भित करते हैं, आपके लिए एक नया उदाहरण बनाएं, केवल यह सत्यापित करने के लिए कि ऑब्जेक्ट Is Nothing
है।
(नोट:
साइड ध्यान दें, यह (कष्टप्रद) काउंटर सहज ज्ञान युक्त व्यवहार विशेष रूप से क्या Rubberduck के वस्तु चर के लिए तर्क के पीछे है आत्म सौंपा कोड निरीक्षण है अगर आप कोड आप, निरीक्षण करने के लिए चाहते हैं पता है कि यह वास्तविक VBE में बहुत तेजी से वेबसाइट)
पर से रन (मिल गया है अगर यह पहले से स्पष्ट नहीं था: मैं रबरडक परियोजना के साथ काफी शामिल हूं)
स्रोत
2017-02-10 18:46:49
इसे दायरे से बाहर जाने दें? आपको इसे नष्ट करने की आवश्यकता क्यों महसूस होती है? – Comintern
@Comintern, मैं TrueCrypt वॉल्यूम में सहेजी गई टेक्स्ट फ़ाइल को लिखने के लिए इस ऑब्जेक्ट का उपयोग करता हूं, और इसका उपयोग करने के बाद मैं इस वॉल्यूम को तोड़ नहीं सकता, शायद अगर मैं इसे नष्ट कर दूं तो मैं इस वॉल्यूम को खाली कर सकता हूं। – Fadi
संभावित डुप्लिकेट [वीबीए: एक नई वस्तु घोषित करने के दो तरीकों से अंतर? (यह समझने की कोशिश कर रहा है कि मेरा समाधान क्यों काम करता है)] (http: // stackoverflow।कॉम/प्रश्न/2478097/vba-difference-in-two-ways-of-declaring-a-new-object-try-to-understand-why) क्यों – Comintern