探究Null、Empty、VbNullstring、Nothing的异同
最近在做机房收费系统的时候,遇到这样一句代码。其实之前也遇到过,但是没有仔细去琢磨。这一琢磨不要紧,一琢磨问题就出来了。
Text1.text=”” 和这样一句代码text1.text=vbnullstring开始的时候没有仔细去想,当成是同样的意思,其实不是的。这样就牵出了null、empty、vbnullstring、nothing、“”等一系列看起来很神似的符号,整合网上的资料和陈伟的视频(个人感觉还是陈伟讲的透彻啊!真心膜拜。。。)
vbNullstring和“”
Dim a As String
这个时候a还没有附值,只是定义a为字符串类型,就是说还没有真正占用内存,地址是0。这时候 a 就是vbNullString
当执行以下这段代码的时候。
a =""
这时,a已经被赋值,尽管等于空字符串,但是已经占用了内存,地址就发生了变化。
Noting
代表是一个对象,什么都没有。没有具体的对象相对应,就是这个对象还没有创建。针对是一个对象,可以使用Isnothing来判断。
例:
Dim n as object
n就是这样一个没有初始化(恢复到默认状态)的对象。还有就是set obj =nothing,如大家经常见到的一样,就是释放这样obj的一个对象。
Empty
代表变量被初始化为空,初始化为string是为 “” ,而初始化为integer等数值型初始化为0.
Null
不代表任何值,不是0也不是nothing。
举个例子:天气预报站,测量仪器坏了。这样中午没有记录了,这个数据信息不可能得到了。这个数据信息写0不对,是吧?其他值也不行。这样的值就是null值,没有任何意义。
再举个应用:
Grade |
一班 |
1 |
78 |
2 |
Null |
3 |
89 |
Average |
(78+89)/2 |
如图在列表中,有个一个班级的成绩是null值。如果要计算班级的平均成绩对于null值,求和不进行求和。不进行整除。这时候的平均成绩就是83.5。如果要判断一个字符串是否为null值,用isnull函数,返回的是boolean。