关于VB的0、""(空字符串)、Null、Empty、与 Nothing 的区别,升三星散分。

chinaboyzyq 2010-07-29 04:15:41
关于VB的0、""(空字符串)、Null、Empty、与 Nothing 的区别


Option Explicit

Private Sub Command1_Click()
Dim A As Variant
Dim B As String
Dim C As Integer
Dim D As Object

Debug.Print A = Empty '一个尚未初始化的variant变量是empty
A = Null: Debug.Print A '一个variant变量可以赋值为Null
Debug.Print IsNull(A) '判断一个varint变量是否为Null
Debug.Print B = "" '判断一个string变量为""(空字符串)
Debug.Print C '定义一个integer变量后,它自动初始化为0
Debug.Print D Is Nothing '定义一个object变量后,它自动初始化为nothing

End Sub

'A 等于 Empty, 因为尚未初始化的“不定型变量”都等于 Empty。
'但如果检测 A = "" 或 A = 0, 也都可以得到 True 值。

'B 等于 "", 未初始化或初始化为""的“非固定长度字符串变量”都等于""。
'但请注意'B<> Null。

'C 等于 0, 这个还有问题吗?

'D 等于 Nothing, 尚未初始化的或用set设置为nothing的对象变量都等于 Nothing,
'但请不要使用 D = Nothing , 而要使用 D Is Nothing 来判断 D 是否等于 Nothing,
'因为判断对象是否相等的符号是 Is 不是 = 。

'最令人迷惑的地方是 Null 这个保留字,请看以下语句:
'A = Null
'Print A = Null
'Print A <> Null
'结果都是输出 Null(不是 True 也不是 False),这是因为任何一个运算式只要含有 Null,
'则该运算式就等于 Null,
'实际上想要判断某一数据是否为 Null 绝对不能使用:
'If A = Null Then ' 永远都会得到 Null
'而要使用:
'If IsNull(A) Then

'哪一种数据会等于 Null 呢?除了含有 Null 运算式之外, 就是没有输入任何数据的
'“数据字段”(在数据库中) 会等于 Null。


VB基础研究及升三星散分……
...全文
2279 70 打赏 收藏 转发到动态 举报
写回复
用AI写文章
70 条回复
切换为时间正序
请发表友善的回复…
发表回复
耳东方木木 2012-09-08
  • 打赏
  • 举报
回复
真是高人不少啊!
Frantic 2011-08-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhao4zhong1 的回复:]

我对楼主的评语是:
佩服!事无巨细。
我对发明Empty,Null,"",Nothing这些概念的人的评语是:
世上本无事,庸人自扰之。
[/Quote]
说实话这几个关键字不应该用这么晦涩的词,个人觉得,可以共用一个名字前面辅之以不同名字的前缀来区分到底是用在什么地方的
zhengmenghua 2011-08-01
  • 打赏
  • 举报
回复
看不懂~!
cBCt6tyb 2010-12-12
  • 打赏
  • 举报
回复
bBCt6tyb 2010-12-12
  • 打赏
  • 举报
回复
aBCt6tyb 2010-12-12
  • 打赏
  • 举报
回复
lj2002aaa188 2010-08-16
  • 打赏
  • 举报
回复
学习。
ratc 2010-08-13
  • 打赏
  • 举报
回复
首先祝贺楼主升级

[Quote=引用 18 楼 lyserver 的回复:]
引用 6 楼 zhao4zhong1 的回复:
我对楼主的评语是:
佩服!事无巨细。
我对发明Empty,Null,"",Nothing这些概念的人的评语是:
世上本无事,庸人自扰之。

错了,没有OLE数据类型,就没有COM,没有COM(VBX+OLE),就没有VB5、VB6了。
凑个热闹,同意老虎的。零长度字符串需要分配数据内存的,只不过数据内存(即COM中的BSTR字符串)头4……
[/Quote]

我想是因为数据库中有个NULL才使得在VB中增加了Variant类型有了个NULL值,
也就是NULL是为了数据库才使用的

有如6楼所说数据库中有个NULL还真是给实际中带来的绝对是麻烦而从未因有NULL而受益过。在DOS时代的数据表字段就没这东东,空字符型就=“”,空数据型就=0,也从来没觉着防碍了什么,而反而省去了处处留心突然间冒出一个NULL。
palleexu 2010-08-13
  • 打赏
  • 举报
回复
学习学习,以前不太用这个,还真不明白。书到用时方恨少啊,还得再来学习
kmzs 2010-08-12
  • 打赏
  • 举报
回复
呵呵,升得好快。楼上说的对,偶有5-6年没生过了。
chenyubo1977 2010-08-09
  • 打赏
  • 举报
回复
学习,接分
熊孩子开学喽 2010-08-09
  • 打赏
  • 举报
回复
恭喜啊,现在VB版升级不易啊
用户 昵称 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhao4zhong1 的回复:]
我对楼主的评语是:
佩服!事无巨细。
我对发明Empty,Null,"",Nothing这些概念的人的评语是:
世上本无事,庸人自扰之。
[/Quote]
甚合俺意,简单事情复杂化,是IT企业的本质。
用户 昵称 2010-08-09
  • 打赏
  • 举报
回复
虽然vb里面的不明白,还好俺明白C里面的。
lijuan1215_2009 2010-08-09
  • 打赏
  • 举报
回复
恭喜猴哥,我经常得到您的帮助,感谢!
m60a1 2010-08-09
  • 打赏
  • 举报
回复


哎...........猴子,你还真有那闲心
  • 打赏
  • 举报
回复
学习了……分,拿来
courage3000 2010-08-08
  • 打赏
  • 举报
回复
不懂

也不懂什么叫做接分

呵呵

傻笑中
Gordon_Freeman 2010-08-08
  • 打赏
  • 举报
回复
看完了,不错~接分~~~



MARK 拿来!!
rkdrc 2010-08-08
  • 打赏
  • 举报
回复
接完分再细细看
加载更多回复(44)

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧