新觀念的 VB5 教本

每週一問: 挑戰您的 VB 功力 (初級篇, 98/01/11)


Q: If Exp1 And Exp2 Then」 與 「If Exp1 Then If Exp2 Then」, 何者速度較快呢?
If X >=10 And X <= 20 Then
    X = X + 1
End If
If X >= 10 Then
    If X <= 20 Then
        X = X + 1
    End If
End If
A: 結果是 If X >= 10 Then If X <= 20 Then 較快, 原因呢?

If X >=10 And X <= 20 Then 判斷式中, X >= 10 And X <=20 總共經過 X >= 10、X <= 20 、 及 And 三次運算, 但是對 If X >= 10 Then If X <= 20 Then 而言, 若 X >= 10 得到 False, 就不會再進行 X <= 20 的運算, 這是速度較快的主要原因。

很多使用者會以為 If X >=10 And X <= 20 Then 在判斷 X >= 10 為 False 之後, 就不會再進行 X <= 20 的判斷, 其實這是錯誤的, 舉例來說, 有些人就會犯以下的錯誤:

    If X <> 0 And Y/X <= 1 Then

由於 Y/X 之中的 X 不可以等於 0, 所以在 Y/X <= 1 之前先加上 X <> 0, 但結果呢? 當 X = 0 時, Y/X <= 1 還是會被運算, 以致產生錯誤, 所以必須改寫成:

    If X <> 0 Then 
        If Y/X <= 1 Then
            ...
        End If
    End If