为什么在与Nothing比较时需要将此字符串声明为对象?
Dim BlankStr
BlankStr = "blank"
If BlankStr Is Nothing Then
End If
我也无法比较If 1 Is 1 Then
。为什么我不能比较基元?
答案 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
答案 1 :(得分:1)
String不是VBScript中的对象。
因此,如果您比较任何原始数据类型,只需使用=
来比较它们是否相等。如果不需要对象。
答案 2 :(得分:0)
根据a comment to this answer,VBScript没有字符串类型。相反,它听起来像字符串是原始的。 Is
适用于对象引用。