错误 800a01a8 字符串需要对象

Error 800a01a8 Object Required for String

为什么这个字符串在与Nothing比较时需要声明为一个对象?

Dim BlankStr
BlankStr = "blank"
If BlankStr Is Nothing Then
End If

我也比较不了If 1 Is 1 Then。为什么我不能比较基元?

根据a comment to this answer,VBScript 没有字符串类型。相反,它听起来像字符串是原语。 Is 使用对象引用。

字符串不是 VBScript 中的对象。

因此,如果您比较任何原始数据类型,只需使用 = 来比较它们是否相等。如果不需要对象。

http://www.w3schools.com/asp/vbscript_ref_functions.asp

VBScript 有数据(子)types。除了像字符串这样的简单(子)类型:

>> x = "blank"
>> WScript.Echo VarType(x), TypeName(x)
>>
8 String

有对象:

>> Set y = New RegExp
>> WScript.Echo VarType(y), TypeName(y)
>>
9 IRegExp2

要将对象分配给变量,您需要 Set, to compare objects, you need Is。简单(非对象)值有自己的比较运算符。

将一个字符串与另一个字符串进行比较:

>> WScript.Echo CStr(x = "blank"), CStr(x = "object")
>>
True False

尝试使用简单值 'as if it were an object',引发 "object required" 错误:

>> Set z = "blank"
>>
Error Number:       424
Error Description:  Object required
>> WScript.Echo CStr(x Is x)
>>
Error Number:       424
Error Description:  Object required

阅读A Whole Lot Of Nothing