*(00)*

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  613 随笔 :: 0 文章 :: 45 评论 :: 159万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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

posted on   *(00)*  阅读(13547)  评论(1编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示