試問 0、''''(空字串)、Null、Empty、與 Nothing 有何區別?


Q: 試問 0""(空字串)、NullEmpty、與 Nothing 有何區別?
A: 先回答以下問題吧! 經過以下的敘述之後, 變數 A、B、C、D 分別等於 0、""、Null、 Empty、 Nothing 的哪一個?

    Dim A
    Dim B As String
    Dim C As Integer
    Dim D As Object

A 等於 Empty, 因為尚未初始化的「不定型變數」都等於 Empty。但如果檢測 A = "" 或 A = 0, 也都可以得到 True 值。
B 等於 "", 因為尚未初始化的非固定長度「字串」都等於 "" 。 但請注意 B <> Null。
C 等於 0, 這個還有問題嗎?
D 等於 Nothing, 尚未設定有物件的「物件變數」都等於 Nothing, 但請不要使用 D = Nothing , 而要使用 D Is Nothing 來判斷 D 是否等於 Nothing, 因為判斷物件是否相等的符號是 Is 不是 = 。

最令人迷惑的地方是 Null 這個保留字, 請看以下敘述:

    Print X = Null
    Print X <> Null

結果都是印出 Null(不是 True 也不是 False), 這是因為任何一個運算式只要含有 Null , 則該運算式就等於 Null, 實際上想要判斷某一資料是否為 Null 絕對不能使用:

    If X = Null Then ' 永遠都會得到 Null

而要使用:

    If IsNull(X) Then

哪一種資料會等於 Null 呢? 除了含有 Null 運算式之外, 就屬沒有輸入任何資料的「資料欄位」(在資料庫中) 會等於 Null。