2015-09-07 8 views
10

वीबीए में, यदि मैं एक स्ट्रिंग की तुलना में vbNullString के विरुद्ध स्ट्रिंग या इसी तरह की तुलना करता हूं तो इससे कोई फर्क पड़ता है; ""? यदि ऐसा है तो दोनों के बीच क्या मतभेद हैं?क्या vbNullString और "" के बीच कोई अंतर है?

+0

http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj

उत्तर

8

vbNullString और "" अलग हैं। यहां एक वेबपृष्ठ अंश है जो स्मृति उपयोग अंतर का वर्णन करता है।


"यह एक स्ट्रिंग चर स्पष्ट करने के लिए हमेशा की तरह है।

Text$ = "" 

क्या बर्बादी! सबसे पहले, स्ट्रिंग "" हर बार जब आप इसका इस्तेमाल रैम के 6 बाइट्स लेता है। पर विचार करें विकल्प:।

Text$ = vbNullString 

तो क्या यह है vbNullString एक विशेष वीबी लगातार कि एक अशक्त स्ट्रिंग को दर्शाता है "" शाब्दिक एक खाली सेंट है अंगूठी। एक महत्वपूर्ण अंतर है। एक खाली स्ट्रिंग एक असली स्ट्रिंग है। एक शून्य स्ट्रिंग नहीं है। यह सिर्फ एक शून्य है। यदि आप सी भाषा जानते हैं, vbNullString न्यूल के बराबर है।

अधिकांश प्रयोजनों के लिए, vbNullString वीबी में "" के बराबर है। एकमात्र व्यावहारिक अंतर यह है कि vbNullString असाइन करने और संसाधित करने के लिए तेज़ है और इसमें कम स्मृति लगती है।

यदि आप कुछ गैर-वीबी एपीआई या घटक कहते हैं, तो अपने आवेदन को वितरित करने से पहले vbNullString के साथ कॉल का परीक्षण करें। जो फ़ंक्शन आप कॉल कर रहे हैं वह नल स्ट्रिंग की जांच नहीं कर सकता है, इस स्थिति में यह क्रैश हो सकता है। एक स्ट्रिंग पैरामीटर को संसाधित करने से पहले गैर-वीबी कार्यों को एनयूएलएल की जांच करनी चाहिए। बुरी किस्मत के साथ, आप जिस विशेष कार्य को बुला रहे हैं वह ऐसा नहीं करता है। इस मामले में, "" का उपयोग करें। आमतौर पर एपीआई का समर्थन करते हैं vbNullString और वे भी इसके साथ बेहतर प्रदर्शन कर सकते हैं "


लेख के बाकी के अनुकूलन तार कि रूप में अच्छी तरह व्यावहारिक हो सकता है पर अतिरिक्त जानकारी है

पूर्ण वेबपेज:। http://www.aivosto.com/vbtips/stringopt.html

3

This comparison बताता है कि एक चर के लिए "" असाइन करने के लिए स्मृति के 6 बाइट्स का उपयोग करता है जबकि vbNullString का उपयोग किसी भी स्मृति का उपयोग नहीं करेगा।

व्यक्तिगत रूप से, मैं एक स्ट्रिंग की लंबाई का मूल्यांकन करना पसंद करता हूं। यदि लंबाई 0 है, तो हम निष्कर्ष पर भी पहुंचते हैं कि स्ट्रिंग vbNullString या "" है। इस विधि को vbNullString की जांच करने का सबसे तेज़ तरीका माना जाता है।

If Len(string) = 0 Then 

आप एक Len बनाम vbNullString बनाम "" तुलना here पढ़ सकते हैं।

+0

पर रोब बोवी की टिप्पणी देखें, अच्छा लगता है, जब तक कि कोई और जानकारी अधिक जानकारी के साथ नहीं, मैं इसे चिह्नित करूंगा समाधान के रूप में। हालांकि, आपके द्वारा लिंक किया गया अंतिम लेख इंगित करता है कि एक अंतर है, हालांकि लेखक करता है नहीं पता कि यह क्या है।यह निश्चित रूप से कुछ वैरिएबल को असाइन किए जाने पर स्मृति के रूप में सरल हो सकता है, जैसा कि आप पहले अपने उत्तर में इंगित करते हैं। – eirikdaude

+1

एक अंतर है, '" "शून्य लंबाई की मौजूदा स्ट्रिंग है, 'vbNullString' प्रकार' स्ट्रिंग 'प्रकार का एक शून्य सूचक है (स्ट्रिंग को इंगित नहीं करता है)। वीबी की तुलना करने के उद्देश्य से [अंतर छुपाता है] (http://stackoverflow.com/questions/37035754/what-does-vb6-initialize-a-static-integer-to/37035879#comment61678413_37035879), लेकिन कभी-कभी आप चाहते हैं [इसे अनदेखा करें] (http://stackoverflow.com/a/20909528/11683)। – GSerg

संबंधित मुद्दे