1. 使用 IIF 和 SWITCH 以精減代碼
在很多地方你都可以使用一個更緊湊的 Iif 函數(shù)來代替 If…Else…Endif 的結(jié)構(gòu): 例:返回兩個值中較大的一個 maxValue = Iif(first >= second, first, second) Switch 則是一個很少使用的函數(shù),可是在很多方面它都提供比 If…ElseIf 結(jié)構(gòu)更好的 例:判斷 "x" 是正、負還是 null? Print Switch(x<0,"負",x>0,"正", True, "Null") 2. 0、""(空字串)、Null、Empty、與 Nothing 的區(qū)別
先回答以下問題吧! 經(jīng)過以下的敘述之后, 變量 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, 尚未設(shè)定有物件的「物件變量」都等于 Nothing, 但請不要使用 D = Nothing , 而要使用 D Is Nothing 來判斷 D 是否等于 Nothing, 因為判斷 是否相等的符號是 Is 不是 = 。 最令人迷惑的地方是 Null 這個保留字, 請看以下語句: Print X = Null Print X <> Null 結(jié)果都是輸出 Null(不是 True 也不是 False), 這是因為任何一個運算式只要含有 Null , 則該運算式就等于 Null, 實際上想要判斷某一數(shù)據(jù)是否為 Null 絕對不能使用: If X = Null Then ' 永遠都會得到 Null 而要使用: If IsNull(X) Then 哪一種數(shù)據(jù)會等于 Null 呢? 除了含有 Null 運算式之外, 就屬沒有輸入任何數(shù)據(jù)的「數(shù)據(jù)字段」(在數(shù)據(jù)庫中) 會等于 Null。 |
|