没有比较给出类型不匹配

时间:2011-12-26 07:17:51

标签: vb6 nothing

我试图检查'Listivew.Tag属性是否无效'。

我过去常常对所有情况进行“无任何”检查,首先检查以避免错误

有人可以解释如何在VB 6中执行此操作吗?

 If Not .lvwLocation.Tag Is Nothing Then
    'COMPANY
    str = str & IIf(Len(.lvwLocation.Tag) > 0, " and u.location_id in " & .lvwLocation.Tag, "")
End If

给出错误'type-mismatch'

2 个答案:

答案 0 :(得分:9)

NothingObject变量的有效值,Is是比较对象指针的方法。

但是VB6控件的Tag属性是一个String, VB6的String类型不是Object;这是一种原始类型。这意味着无法为String变量赋值Nothing - 其最空的可能值是空字符串。 (并且不能为Object变量赋予String值。)对于字符串,只需使用与其他原语(数字/布尔/日期)类型相同的相等/不等/比较运算符:

If .lvwLocation.Tag <> "" Then ...

答案 1 :(得分:2)

在VB6中,似乎使用Is Nothing来比较Objects是有效的,我尝试的其他每种数据类型都没有。在.Net Nothing中表示任何数据类型的默认值,并且将按预期工作。

Dim test as Object

If Not test Is Nothing Then
   /////  
End If

因为VB6中的Tag属性的数据类型是字符串。我会使用类似的东西:

If .lvwLocation.Tag <> "" Then      
    /////
End If