vbNullString和“”之间有什么区别吗?
在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://*.com/questions/37035754/what-does-vb6-initialize-a-static-integer-to/37035879#comment61678413_37035879),但有时你想[取消隐藏](http://*.com/a/20909528/11683)。 – GSerg
请参阅Rob Bovey的评论http://dailydoseofexcel.com/archives/2008/06/26/identify-empty-cells-in-vba/ – brettdj