探究Null、Empty、VbNullstring、Nothing的异同

       最近在做机房收费系统的时候,遇到这样一句代码。其实之前也遇到过,但是没有仔细去琢磨。这一琢磨不要紧,一琢磨问题就出来了。

Text1.text=”” 和这样一句代码text1.text=vbnullstring开始的时候没有仔细去想,当成是同样的意思,其实不是的。这样就牵出了nullemptyvbnullstringnothing、“”等一系列看起来很神似的符号,整合网上的资料和陈伟的视频(个人感觉还是陈伟讲的透彻啊!真心膜拜。。。)

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

 

转载于:https://www.cnblogs.com/guziming/archive/2012/09/08/4232785.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
修改下列代码:错误:类型不匹配:Private Declare Function SendMessage Lib "user32" Alias "SendMessageW" (ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, lParam As Long) As Long Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExW" (ByVal hWndParent As Long, ByVal hWndChildAfter As Long, ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long Private Declare Function GetClassName Lib "user32" Alias "GetClassNameW" (ByVal hWnd As Long, ByVal lpClassName As Long, ByVal nMaxCount As Long) As Long Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextW" (ByVal hWnd As Long, ByVal lpWindowText As Long, ByVal nMaxCount As Long) As Long Private Const WM_APPCOMMAND As Long = &H319 Private Const APPCOMMAND_VOLUME_UP As Long = &HA Private Const APPCOMMAND_VOLUME_DOWN As Long = &H9 Private Const APPCOMMAND_VOLUME_MUTE As Long = &H8 Public Sub SetSystemVolume(ByVal level As Integer) Dim hWndTaskbar As Long Dim hWndVolumeCtrl As Long Dim hWndParent As Long Dim hWndChild As Long Dim className As String hWndTaskbar = FindWindowEx(0, 0, "Shell_TrayWnd", vbNullString) If hWndTaskbar = 0 Then Exit Sub hWndVolumeCtrl = FindWindowEx(hWndTaskbar, 0, "TrayNotifyWnd", vbNullString) If hWndVolumeCtrl = 0 Then Exit Sub hWndParent = FindWindowEx(hWndVolumeCtrl, 0, "SysPager", vbNullString) If hWndParent = 0 Then Exit Sub hWndChild = FindWindowEx(hWndParent, 0, "ToolbarWindow32", vbNullString) If hWndChild = 0 Then Exit Sub ' get class name of the volume control className = Space(256) GetClassName hWndChild, StrPtr(className), Len(className) className = Left$(className, InStr(className, vbNullChar) - 1) ' find the volume control by window title hWndChild = FindWindowEx(hWndChild, 0, className, "Volume") If hWndChild = 0 Then Exit Sub SendMessage hWndChild, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_UP * &H10000 + level End Sub Public Sub MuteSystemVolume() Dim hWndTaskbar As Long Dim hWndVolumeCtrl As Long Dim hWndParent As Long Dim hWndChild As Long Dim className As String hWndTaskbar = FindWindowEx(0, 0, "Shell_TrayWnd", vbNullString) If hWndTaskbar = 0 Then Exit Sub hWndVolumeCtrl = FindWindowEx(hWndTaskbar, 0, "TrayNotifyWnd", vbNullString) If hWndVolumeCtrl = 0 Then Exit Sub hWndParent = FindWindowEx(hWndVolumeCtrl, 0, "SysPager", vbNullString) If hWndParent = 0 Then Exit Sub hWndChild = FindWindowEx(hWndParent, 0, "ToolbarWindow32", vbNullString) If hWndChild = 0 Then Exit Sub ' get class name of the volume control className = Space(256) GetClassName hWndChild, StrPtr(className), Len(className) className = Left$(className, InStr(className, vbNullChar) - 1) ' find the volume control by window title hWndChild = FindWindowEx(hWndChild, 0, className, "Volume") If hWndChild = 0 Then Exit Sub SendMessage hWndChild, WM_APPCOMMAND, 0, APPCOMMAND_VOLUME_MUTE * &H10000 End Sub Private Sub Command1_Click() MuteSystemVolume End Sub
最新发布
05-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值