在if活動里添加下面的條件:
mystr IsNot Nothing And mystr.Contains('000')
- 字符串的Contains()方法:參數是一個字符串,表示要去目標字符串中查找的文本。返回值是一個布爾值。例如'abcdefg'.Contains('bcd'),返回True。
試想當變量mystr是Nothing時會發生什么?
And運算符的邏輯是,不管每個條件的結果是什么,對所有條件都檢查一遍。
因此當變量mystr是Nothing時會發生異常,因為當檢查到myStr.Contains('000')時,Nothing是沒有Contains()方法的。
現在我們把條件修改為:
mystr IsNot Nothing AndAlso mystr.Contains('000')
AndAlso運算符的邏輯是,先檢查第一個條件,如果其結果為False,就不進行下一條件的檢查了。因為“且”的邏輯是,第一個條件為False,不管后面的條件是True還是False,整個判斷結果已經是False了。
所以當變量mystr是Nothing的時候,第一個條件判斷結果為False,就不會取判斷下一個條件mystr.Contains('000')了。
這種跳過條件的邏輯運算叫做短路(short-circuiting),類似的運算符還有OrElse。
實在弄不明白也沒事,畢竟我們還可以嵌套if啊!
ps.有可能斷更一段時間的Level 2。