我正在尝试检查“Listivew.Tag属性是否为nothing”。
我过去通常会对所有场景进行“什么都不是”的检查,作为避免错误的第一次检查
有没有人能解释一下VB6是怎么做的?
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‘
发布于 2011-12-26 17:08:01
Nothing是Object变量的有效值,Is是比较对象指针的方法。
但是VB6控件的Tag属性是一个String,而VB6的String类型不是一个对象;它是一个基本类型。这意味着字符串变量不能被赋值为Nothing --它最空的可能值是空字符串。(并且对象变量不能被赋予字符串值。)对于字符串,只需使用与其他原语(数字/布尔/日期)类型相同的相等/不等/比较运算符:
If .lvwLocation.Tag <> "" Then ...发布于 2011-12-26 15:29:38
在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 Ifhttps://stackoverflow.com/questions/8633751
复制相似问题