VB6相当于string.IsNullOrEmpty

Jus*_*gan 26 string vb6

我正在做遗留应用程序的一些工作,而我的VB6技能并不是那么好.我需要检查String字段是否已初始化并设置为null/nothing或空字符串以外的其他字符串.在C#中,我只是做了类似的事情:

if (string.IsNullOrEmpty(myObj.Str))
Run Code Online (Sandbox Code Playgroud)

我不确定在VB6中它的等价物是什么,而且我对使用If myObj.Str = ""它并将其称为好而感到紧张.这样做的正确方法是什么?

为了澄清,如果满足以下任何条件,我希望返回True:

  • 该字段尚未初始化
  • 该字段为空字符串(str ="",length = 0)
  • 该字段设置为null,或Nothing,或vbnull,或任何形式的null值适用于VB6字符串.

该字段最初为Long,我正在替换的代码检查它是否设置为0.

Mar*_*rkJ 41

VB6的设计很简单

使用

If str = "" Then 
  ' uninitialised, null or empty ""
Run Code Online (Sandbox Code Playgroud)
  • 字符串会自动初始化为[ 编辑 ]空字符串.
  • 空字符串是vbNullString.
  • 不要担心空字符串.对于(几乎)任何字符串操作,VB6空字符串与空字符串""无法区分.

  • 不正确.字符串不会自动初始化为空.对于空字符串(vbNullString),使用StrPtr将返回0,而StrPtr("")将返回空字符串的地址.但是,VB6确实对它们都是一样的,它只是可能关心的API调用. (3认同)

War*_*Rox 11

满足您的3个要求的最优化和安全的方法如下:

If LenB(myObj.Str) = 0 
Then Debug.Print "String is empty/null/not initialized" 
Else Debug.Print "Not Empty"
Run Code Online (Sandbox Code Playgroud)

  • 测试长度是测试字符串是否为零长度的最有效方法,但它的可读性不如简单的 `str = ""`。性能有多重要? (2认同)