【发布时间】:2015-09-07 09:29:35
【问题描述】:
在 VBA 中,如果我将字符串或类似字符串与 vbNullString 进行比较而不是与空字符串进行比较,会有什么不同吗? ""?如果有,两者有什么区别?
【问题讨论】:
-
在dailydoseofexcel.com/archives/2008/06/26/…查看 Rob Bovey 的评论
标签: vba
在 VBA 中,如果我将字符串或类似字符串与 vbNullString 进行比较而不是与空字符串进行比较,会有什么不同吗? ""?如果有,两者有什么区别?
【问题讨论】:
标签: vba
vbNullString 和 "" 是不同的。这是描述内存使用差异的网页摘录。
"这是清除字符串变量的常用方法。
Text$ = ""
真是浪费!首先,字符串"" 每次使用都会占用6 个字节的RAM。考虑替代方案:
Text$ = vbNullString
那么这是什么? vbNullString 是一个特殊的 VB 常量,表示一个空字符串。 "" 文字是一个空字符串。有一个重要的区别。空字符串是真正的字符串。空字符串不是。它只是一个零。如果你懂 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 与vbNullString 与"" 比较here。
【讨论】:
""是一个现有的零长度字符串,vbNullString是一个String类型的空指针(不指向字符串)。出于对比VBhides the difference的目的,但有时你想unhide it。