错误800a01a8字符串所需的对象

时间:2016-04-27 16:58:16

标签: vbscript asp-classic

为什么在与Nothing比较时需要将此字符串声明为对象?

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

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

3 个答案:

答案 0 :(得分:3)

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来比较对象,您需要Is。简单(非对象)值具有自己的比较运算符。

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

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

尝试使用一个简单的值'就好像它是一个对象',抛出一个“需要对象”的错误:

>> 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

答案 1 :(得分:1)

String不是VBScript中的对象。

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

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

答案 2 :(得分:0)

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