VB中的一個特性

原创 2006年06月11日 20:37:00

有一張Form, 如圖

代碼如下:

Option Explicit
Private m_cln1 As Collection
Private m_cln2 As New Collection

'Set Nothing
Private Sub Command4_Click()
    Set m_cln1 = Nothing
    Set m_cln2 = Nothing
End Sub

'Check Cln1
Private Sub Command5_Click()
    If m_cln1 Is Nothing Then
        MsgBox ("Object is Nothing!")
    Else
        MsgBox ("Object is Not Nothing!")
    End If
End Sub

'Check Cln2
Private Sub Command6_Click()
    If m_cln2 Is Nothing Then
        MsgBox ("Object is Nothing!")
    Else
        MsgBox ("Object is Not Nothing!")
        m_cln2.Add ("Test")
        MsgBox (m_cln2.Count)
    End If
   
End Sub

'Init
Private Sub Form_Load()
    Set m_cln1 = Nothing
    Set m_cln2 = Nothing
End Sub

我們先點擊一下command4,把兩個Collection都set nothing。
這時,我們點擊Command5會出現以下對話框(圖2):

這裡理所當然的,因為我們從一開始就沒有定義過m_cln1的實例。

但如果我們點擊command6時,會出現以下地話框:

為什麼會這樣呢?我們明明把兩個collection都設為Nothing,為什麼m_Cln2不是Nothing呢?
原因是這樣的,當我們以這樣的方式定義實例時:
Private m_cln2 As New Collection
在我們一訪問cln2時,vb的runtime就會自動幫我們完成把對象實例化的功能,如下面代碼:
set m_cln2 = nothing
if m_cln2 is nothing then   '訪問m_cln2是否為空
    ...
endif
在上面紅色的代碼,其實VB的Runtime是幫我們做了以下的動作:
set m_cln2 = new collection
這裡,m_cln2已經不為空啦!

其實我們的command4的動作是成功的完成了,在按了Command4的這個時候,兩上Collection已經是為空了,只是我們在檢測m_cln2是否為空時,VB的runtime聰明的幫我們做了一些動作。

其實我們在VB的開發過程中這種情況存在嗎?答案是存在的!
好簡單,我但定議了一張新的Form2,裡面有一個對外的方法,如下:
public sub ShowMessage()
        msgbox("hello world!")
endSub

我在張Form1加上一個新的command,command的方法如下:
Private Sub Command1_Click()
    Set Form2 = Nothing
    Form2.ShowMessage
End Sub

這裡,Command1的同樣動作成功的完成了。

VB ListView控件各种操作详解

Private Sub Form_Load() 'ListView1.SmallIcons = ImageList1.Object '把ImageList1图标列表控件绑定到 ListVie...
  • cncco
  • cncco
  • 2013年11月30日 12:45
  • 26636

VB6 正则表达式提取内容

今天帮同事做一个数据对接,从返回的数据中提取想要的部分。返回的是一个WebService结果,由外圈的XML标记和中间的有效内容组成,现在要把有效内容取出来,VB6.0实现。 下面是返回的内容: ...
  • zhouyingge1104
  • zhouyingge1104
  • 2015年12月07日 14:00
  • 4487

VB.Net的多线程及委托

一、多线程:在一个程序中,这些独立运行的程序片断叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程处理一个常见的例子就是用户界面。利用线程,用户可按下一个按钮,然后程序会立即作...
  • action20
  • action20
  • 2013年08月09日 21:41
  • 1898

加密与解密(针对VB程序特性的破解)

用不同编程语言、编译器写出来的程序,它们的特点都是不一样的,多了解一些的话就会对我们的逆向破解大有帮助。          推荐教程:鱼C工作室_加密与解密系列_OD使用教程     VB是...
  • Cloudkings
  • Cloudkings
  • 2015年12月04日 21:54
  • 769

c#中的特性(attribute)+反射的一个例子

  • 2008年08月01日 21:03
  • 45KB
  • 下载

学习Hub Switch Router特性的一个很好实例

  • 2011年04月11日 19:57
  • 559KB
  • 下载

C#3.0与VB9.0的新特性介绍

  • 2008年03月26日 10:24
  • 2.34MB
  • 下载

MATLAB和VB混合编程在电流互感器励磁特性曲线拟合中的应用.pdf

  • 2009年04月22日 12:43
  • 358KB
  • 下载

利用VB文本框特性制作多媒体抢答器

  • 2012年11月16日 11:09
  • 158KB
  • 下载

讲解VB.NET面向对象编程的特性

  • 2013年05月03日 20:29
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VB中的一個特性
举报原因:
原因补充:

(最多只允许输入30个字)