在VBA中,将它做任何区别,如果我比较字符串,或类似的,针对vbNullString
而不是对一个空字符串; ""
?如果有的话,两者之间有什么不同?vbNullString和“”之间有什么区别吗?
回答
vbNullString
和""
是不同的。这是一个描述内存使用差异的网页exerpt。
“这是清除一个字符串变量通常的方式。
Text$ = ""
真是浪费!首先,串""
需要在每次使用时间为6个字节的RAM。考虑替代方案:?
Text$ = vbNullString
那么,什么是这个vbNullString
是一个特殊的VB常数,表示空字符串字面""
是一个空的ST环。有一个重要的区别。一个空字符串是一个真正的字符串。空字符串不是。这只是一个零。如果您知道C语言,则vbNullString
等于NULL。
在大多数情况下,vbNullString
相当于VB ""
。实际上唯一不同的是,vbNullString
更快分配和过程,它需要较少的内存。
如果您调用一些非VB API或组件,请在分发应用程序之前使用vbNullString
测试调用。你正在调用的函数可能不会检查一个NULL字符串,在这种情况下它可能会崩溃。在处理字符串参数之前,非VB函数应检查NULL。运气不好,你打电话的特定功能不会这样做。在这种情况下,请使用""
。通常的API都支持vbNullString
,他们甚至可以用它更好地执行“
本文的其余部分,对优化字符串,可能是有见地的,以及其他信息
This comparison指出将""
分配给变量使用6个字节的内存,而使用vbNullString
将不使用任何内存。
就个人而言,我更喜欢来评估字符串的长度。如果长度为0,那么我们也得出的结论是该字符串是一个vbNullString
或""
。这种方法被接受为检查一个vbNullString
的最快的方法。
If Len(string) = 0 Then
您可以阅读Len
VS vbNullString
VS ""
比较here。
看起来不错,除非有其他人提供更多信息,我会标记此内容作为解决方案,但是,您链接的最后一篇文章指出了作者的确存在差异不知道它是什么。它当然可以像分配给变量时所占用的内存那样简单,就像你在答案中早些时候指出的那样。 – eirikdaude
有一个区别,''“'是一个零长度的现有字符串,'vbNullString'是一个类型为'String'的空指针(不指向字符串)。为了比较VB [隐藏差异](http://stackoverflow.com/questions/37035754/what-does-vb6-initialize-a-static-integer-to/37035879#comment61678413_37035879),但有时你想[取消隐藏](http://stackoverflow.com/a/20909528/11683)。 – GSerg
- 1. dpm()和dsm()之间有什么区别?
- 2. @dynamic和@synthesize之间有什么区别?
- 3. * zoom和zoom之间有什么区别?
- 4. String.Concat,string.format和+之间有什么区别?
- 5. StaticLayout和DynamicLayout之间有什么区别
- 6. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之间有什么区别?
- 7. :: after和after之间有什么区别?
- 8. %.02f和%.2f之间有什么区别?
- 9. {$ var}和$ var之间有什么区别?
- 10. ReleaseFloatArrayElements和DeleteLocalRef之间有什么区别
- 11. {0}和“”之间有什么区别?
- 12. getA()和this.getA()之间有什么区别?
- 13. @observable和@published之间有什么区别
- 14. $ {}和#{}之间有什么区别?
- 15. url.getFile()和getpath()之间有什么区别?
- 16. KVC和Properties之间有什么区别?
- 17. Lazy.Force()和Lazy.Value之间有什么区别
- 18. “层”和“层”之间有什么区别?
- 19. 1.1em和1.05em之间有什么区别?
- 20. proc和lambda之间有什么区别?
- 21. ViewFlipper和ViewSwitcher之间有什么区别
- 22. typedef和宏之间有什么区别?
- 23. “$^N”和“$ +”之间有什么区别?
- 24. NSInvocation和block之间有什么区别?
- 25. -existingObjectWithID:error:和-objectWithID之间有什么区别?
- 26. {0}和+之间有什么区别?
- 27. Locationmanager.locationListener和com.google.android.gms.location.LocationListener之间有什么区别?
- 28. $ .cache和$ .data之间有什么区别?
- 29. DateTime.UtcNow和DateTime.Now.ToUniversalTime()之间有什么区别
- 30. Tableau和QlikView之间有什么区别
请参阅Rob Bovey的评论http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj