首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是不是比较没有提供类型不匹配

是不是比较没有提供类型不匹配
EN

Stack Overflow用户
提问于 2011-12-26 15:17:51
回答 2查看 6.1K关注 0票数 3

我正在尝试检查“Listivew.Tag属性是否为nothing”。

我过去通常会对所有场景进行“什么都不是”的检查,作为避免错误的第一次检查

有没有人能解释一下VB6是怎么做的?

代码语言:javascript
复制
 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‘

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-26 17:08:01

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

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

代码语言:javascript
复制
If .lvwLocation.Tag <> "" Then ...
票数 9
EN

Stack Overflow用户

发布于 2011-12-26 15:29:38

在VB6中,似乎使用Is Nothing来比较Objects是可行的,但我尝试的其他数据类型都不是这样。在.Net中,Nothing表示任何数据类型的默认值,它的工作方式与您预期的一样。

代码语言:javascript
复制
Dim test as Object

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

因为看起来VB6中Tag属性的数据类型是一个字符串。我会使用类似这样的东西:

代码语言:javascript
复制
If .lvwLocation.Tag <> "" Then      
    /////
End If
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8633751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档