• VB中判断空的几种方法,Null, Missing, Empty, Nothing, vbNullString区别


    vb6中存在几个虚幻的值:Null、Missing、Empty、Nothing、vbNullString。除了最后一个之外,每一个值都不能直接用“a=值”来判断。下面分别解释一下这几个值的含义。

    1、Null。

    Null指一个不合法的数据,判断一个变量是否为Null使用isNull函数。

    这种数据通常出现在三种情况下:

    (1)最简单的,函数直接返回Null给调用方。譬如

    Function DivideEx(ByVal A as Double, ByVal B as Double) as Double

    If B=0 Then DivideEx=Null Else DivideEx=A/B

    End Function这个函数在B=0时返回Null指不合法数据。

    (2)数据库中,当一个字段设为“允许空值”时,VB读取到空值就会用Null表示。譬如

    Function GetCity(rst as ADODB.Recordset) as String

    If isNull(rst.Field("City")) GetCity=rst.Field("Province") Else GetCity=rst.Field("City")

    End Function在这个函数中,当City字段为空时(表示所在地区为一直辖市)返回Province字段,否则返回City字段。

    (3)在调用库函数时,如果遇到传送变量类型与定义类型不一样时有时会出现Null值。

    Null值在计算时有点奇怪,譬如Null-Null=Null,Null+10=10,Null+""=""等

    2、Missing

    Missing指传递进入Variant变量的缺少,判断Missing使用isMissing函数。譬如

    Function test(Optional a)

    If isMissing(a) Then test="You don't give this the varible a." Else test="You've given this the varible a."

    End

    Sub Main()

    Debug.Print test '->You don't give this the varible a.

    Debug.Print test(123) '->You've given this the varible a.

    End Sub注意,Missing只会在Varient中出现,如果给入的数据类型是Byte,Integer,Long,Single,Double等缺少时为0;String缺少时为"";Object缺少时为Nothing。

    3、Enpty

    Empty指一个Variant变量未初始化,判断Empty使用isEmpty函数。譬如

    Function test(a)

    If isEmpty(a) Then test="a is Empty" Else test="a isn't Empty"

    End Function

    Sub Main()

    Dim a as Variant

    test(a) '->a is Empty

    a=""

    test(a) '->a isn't Empty

    a=0

    test(a) '->a isn't Empty

    End Sub4、Nothing

    Nothing相当于Object变量中的空值。指指向于空对象的引用。

    未初始化的Object变量为Nothing;未传入函数的Object为Nothing。判断一个变量是否为Nothing使用 is Nothing表达式。

    同时,Nothing还有另外一个用途,就是把所有指向某一个对象的Object变量赋值为Nothing可以销毁此对象节省内存空间。

    5、vbNullString

    vbNullString是一个String类型的常量,通常用于传递一个Null给库函数。不过很奇怪的是vbNullString=""这个表达式为True.  

    FROM:http://gerhut.net/blogger/2006/08/vb6nullmissingemptynothingvbnullstring.html

  • 相关阅读:
    糍粑大叔的独游之旅-战斗!之弹道实现
    攻击判定流程研究: 瀑布算法、圆桌算法、混合算法解析
    GitHub排名TOP30的机器学习开源项目/贪心学院
    学习ES7+ES8
    k8s Ipvs 内部网络自动分配和内部网络一致ip地址,导致ip冲突
    Linux操作系统load average过高,kworker占用较多cpu
    chrome断点调试&&其他技巧
    Mongodb更新数组$pull修饰符 (mongodb 修改器($inc/$set/$unset/$push/$pop/upsert))
    记一次线上Java程序导致服务器CPU占用率过高的问题排除过程
    解决并发问题,数据库常用的两把锁(转)
  • 原文地址:https://www.cnblogs.com/zouhao/p/3664651.html
Copyright © 2020-2023  润新知