AndAlso,OrElse和And,Or的區別

2021-06-07 13:31:53 字數 1206 閱讀 7796

andalso和orelse應該是vb.net引入的新運算子。

因為用vb。net的時間還不是很長,之前我一直以為他們和and,or根本沒有區別。

現在終於明白,他們之間還是有很大區別的:

andalso,orelse相對於and,or最大的特性是會自動實現「最短路徑」。

所謂「最短路徑」就是指:當第乙個被比較的表示式的結果已經能決定運算的最終結果時,就不會再去比較其他表示式,因此可以避免掉額外且不需要的比較表示式。

舉個很簡單的例子說明下:

1dima 

asint16 =1

2dimb 

asint16 =234

'用or的話,a=1,b=2都會被比較

5ifa =1

orb =2

then

6'***xx

7endif89

'用orelse的話,只比較了第乙個條件a=1

10ifa =1

orelseb =

2then

11'***x

12endif

當用or的時候,a=1和b=2這2個條件,都會被判斷。而用orelse,則當前面乙個條件(a=1)已經能決定最終結果的話,程式就不會在判斷第二個條件(b=2)了。

類似的情況還有:

當出現以上情況時,andalso和orelse的效率要高於and,or。

所以,在大多數情況下,我們可以使用andalso和orelse替換and,or,以提高運算效率。

1dima 

asint16 =1

2dimb 

asint16 =234

'用and的話,a=999,b=2,(a + b) * (b - a) = 3 都會被比較

5ifa 

=999

andb =2

and(a 

+b) 

*(b 

-a) =3

then

6'***xx

7endif89

'用andalso的話,只比較了第乙個條件a=999,由於已經是false了,所以後面的表示式不再判斷

10ifa 

=999

andalsob =

2andalso

(a +

b) *

(b -

a) =

3then

11'***x

12endif

和 區別和聯絡, 和 區別和聯絡

和 區別和聯絡,和 區別和聯絡,實際專案中,什麼情況用哪種?首先,和 的聯絡 共同點 和 都可以用作 邏輯與 運算子,都是雙目運算子。具體要看使用時的具體條件來決定。無論使用哪種運算子,對最終的運算結果都沒有影響。情況1 當上述的運算元是boolean型別變數時,和 都可以用作邏輯與運算子。情況2 ...

rpx和樣式和class和flex

5 style 靜態的樣式統一寫到 class 中。style 接收動態的樣式,在執行時會進行解析,請盡量避免將靜態的樣式寫進 style 中,以免影響渲染速度。例 6 class 用於指定樣式規則,其屬性值是樣式規則中類選擇器名 樣式類名 的集合,樣式類名不需要帶上.樣式類名之間用空格分隔。關於f...

if和switch和for語句

if和switch很像。具體什麼場景下,應用那個語句呢?如果判斷的具體數值不多,而是符合byte,short,int,char,字串。這五種型別。雖然兩個語句都可以使用,建議使用switch語句,因為效率稍高。其他情況,對區間判斷,對結果為boolean型別判斷,使用if,if的使用範圍更廣。whi...