1. 使用 IIF 和 SWITCH 以精減代碼
在很多地方你都可以使用一個(gè)更緊湊的 Iif 函數(shù)來(lái)代替 If…Else…Endif 的結(jié)構(gòu): 例:返回兩個(gè)值中較大的一個(gè) maxValue = Iif(first >= second, first, second) Switch 則是一個(gè)很少使用的函數(shù),可是在很多方面它都提供比 If…ElseIf 結(jié)構(gòu)更好的 例:判斷 "x" 是正、負(fù)還是 null? Print Switch(x<0,"負(fù)",x>0,"正", True, "Null") 2. 0、""(空字串)、Null、Empty、與 Nothing 的區(qū)別
先回答以下問(wèn)題吧! 經(jīng)過(guò)以下的敘述之后, 變量 A、B、C、D 分別等于 0、""、Null、 Empty、 Nothing 的哪一個(gè)? Dim A Dim B As String Dim C As Integer Dim D As Object A 等于 Empty, 因?yàn)樯形闯跏蓟摹覆欢ㄐ妥兞俊苟嫉扔?Empty。但如果檢測(cè) A = "" 或 A = 0, 也都可以得到 True 值。 B 等于 "", 因?yàn)樯形闯跏蓟姆枪潭ㄩL(zhǎng)度「字串」都等于 "" 。 但請(qǐng)注意 B<> Null。 C 等于 0, 這個(gè)還有問(wèn)題嗎? D 等于 Nothing, 尚未設(shè)定有物件的「物件變量」都等于 Nothing, 但請(qǐng)不要使用 D = Nothing , 而要使用 D Is Nothing 來(lái)判斷 D 是否等于 Nothing, 因?yàn)榕袛?是否相等的符號(hào)是 Is 不是 = 。 最令人迷惑的地方是 Null 這個(gè)保留字, 請(qǐng)看以下語(yǔ)句: Print X = Null Print X <> Null 結(jié)果都是輸出 Null(不是 True 也不是 False), 這是因?yàn)槿魏我粋€(gè)運(yùn)算式只要含有 Null , 則該運(yùn)算式就等于 Null, 實(shí)際上想要判斷某一數(shù)據(jù)是否為 Null 絕對(duì)不能使用: If X = Null Then ' 永遠(yuǎn)都會(huì)得到 Null 而要使用: If IsNull(X) Then 哪一種數(shù)據(jù)會(huì)等于 Null 呢? 除了含有 Null 運(yùn)算式之外, 就屬?zèng)]有輸入任何數(shù)據(jù)的「數(shù)據(jù)字段」(在數(shù)據(jù)庫(kù)中) 會(huì)等于 Null。 |
|
來(lái)自: 昵稱5356750 > 《我的圖書(shū)館》