VBNET中的Option Explicit 和 Option Strict是針對編譯器的語句作為程序員總是想在程序編譯期時候發現程序的錯誤而不願在運行期來發現當一個程序成功編譯以後你可能會認為該程序已經通過所有編譯期的錯誤檢查不會再有其它錯誤使你嚇一跳然而事實上程序運行一次沒有錯誤並不表明下次運行時是否會發生錯誤因此如果潛在的運行期的錯誤在編譯期被及時發現應用程序將變得非常穩定
Option Explicit語句決定編譯器是否要求所有的變量被顯式的聲明語法如下
Option Explicit [ On | Off ]
如果選擇On則編譯器是否要求所有的變量被顯式的聲明如果選擇Off則編譯器是允許變量的隱式聲明這樣以來可不是一件好事比如在代碼的編寫過程中不小心敲錯了變量名由於編譯器允許變量的隱式聲明所以在程序編譯的時候是不會發生錯誤的但是在運行期可能會發生不可預期的錯誤因此在代碼中最好不要用Option Explicit Off
Option Strict語句決定編譯器類型的隱式轉換方面的要求語法如下
Option Strict [ On | Off ]
如果選擇On則編譯器允許放寬的隱式類型轉換如果選擇Off則編譯器是不僅允許放寬的類型轉換而且允許縮窄的類型轉換對於放寬的類型轉換一般不會發生數據的丟失或不正確的結果例如將一個整型(Integer)的變量轉換為長整型(Long)的變量是一個放寬的類型轉換長整型可以包含所有整型變量的值相反從長整型向整型變量的轉換是一個縮窄的類型轉換因為一些長整型的值是超出整型所表示的范圍的
VBNET默認放寬的類型轉換例如在下面的代碼的第二行中將會自動發生放寬的類型轉換賦值表達式右邊的變量自動轉換為長整型變量以便能保存到變量b中
Dim a As Integer =
Dim b As Long = a
自動發生的類型轉換稱為隱式類型轉換
現在來考慮相反的情況
Dim a As Long =
Dim b As Integer = a
上面代碼的第二行試圖進行隱式縮窄的類型轉換編譯器是否允許這種轉換決定於Option Strict的設置如果Option Strict設置為On試圖進行隱式縮窄的類型轉換將會發生編譯錯誤設置為Off編譯器將自動在後台進行類型轉換這樣在程序運行時如果實際要轉換的值超出目標類型的范圍將會導致程序拋出異常
對於某些程序有時進行縮窄的類型轉換是必要的因此程序員可能知道某個變量進行類型轉換時會超出目標類型的范圍而添加適當的代碼來處理可能發生的異常這種情況可以通過適當的函數來進行顯式的類型轉換例如
Dim a As Long =
Dim b As Integer = CInt(a)
上面的變換即稱為顯式的類型轉換因為程序員明確的要求進行整型變換注意盡管從表面上來看上面的代碼與前面的隱式類型轉換相比多了一次函數調用但是編譯後的代碼是一樣的所以執行的效率和隱式類型轉換一樣
From:http://tw.wingwit.com/Article/program/net/201311/11692.html