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...