OrElse 運算子和AndAlso 運算子

        在 VB.NET 中,一般的判斷式都會使用到 Or 及 And 運算子,可是比較少人知道它們還有二個相對應的 OrElse 及 AndAlso 運算子。一般而言,筆者會建議所有的判斷式都使用 OrElse 來取代 Or 運算子,使用 AndAlso 來取代 And  運算子。為什麼呢?因為 OrElse 及 AndAlso 運算子的執行效能會優於 Or 及 And 運算子,以下就來說明其中的原由

OrElse 運算子

意義:對兩個運算式執行最少運算 (Short-Circuiting) 內含邏輯分離 (Logical Disjunction)。

result = expression1 OrElse expression2

使用 OrElse 運算子來結合多個判斷式時,它會由前至後逐一評估每個判斷式的結果,當判斷過程中有其中一個判斷式為 True 時,它就會略過後序的判斷式,直接傳回 True。也就是當 expression1 的評估結果為 True 時,expression2 就不會再去評估結果,當 OrElse 結合的判斷式愈多時,更會突顯出它的執行效能優勢。

我們來看看下面的程式碼,同樣的判斷式分別使用 Or 及 OrElse 結合運算子。

Dim  oArray  As  ArrayList  ' 未使用 New 建立物件執行個體   
         Dim  bResult  As   Boolean

        
' And とAndAlso が 異なる
         ' 會發生錯誤,因為 oArray 為 Nothing,不能直接使用它的 Count 屬性   
        bResult  =  ( Not  oArray  Is   Nothing And  (oArray.Count  >   0 )

        
' 不會發生錯誤,因為第一個判斷式為 False 即傳回 False,後序的判斷式不評估   
        bResult  =  ( Not  oArray  Is   Nothing AndAlso  (oArray.Count  >   0 )

上面的程式碼中,若使用 And 運算子會發生錯誤,因為 (oArray IsNot Nothing) 及 (oArray.Count > 0) 二個判斷式會同時被評估,而這樣的程式碼很容易發生錯誤;因為一但 oArray 為 Nothing 時,後面的  (oArray.Count = 0) 一定會發生錯誤。上述使用 And 運算子的判斷式,要修正如下才是正確的。

但使用 AndAlso 運算子就沒有這個困擾了,因為當 (oArray IsNot Nothing) 為 False 時,它就會馬上傳回 False,後面的 (oArray.Count > 0) 根本不會被評估;因為後面的判斷式為 True 或 False 都不會影響結果,所以 AndAlso 可以執行最少運算邏輯交集運算,當然執行效能上相對好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值