错误 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 中的对象。
因此,如果您比较任何原始数据类型,只需使用 =
来比较它们是否相等。如果不需要对象。
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
为什么这个字符串在与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 中的对象。
因此,如果您比较任何原始数据类型,只需使用 =
来比较它们是否相等。如果不需要对象。
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