概述VB.NET Option Strict
本文向大家介紹VB.NET Option Strict,可能好多人還不了解VB.NET Option Strict,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
VB.NET Option Strict和Option Explicit是針對編譯器的語句。作為程序員總是想在程序編譯期時候發現程序的錯誤,而不愿在運行期來發現。當一個程序成功編譯以后,你可能會認為該程序已經通過所有編譯期的錯誤檢查,不會再有其它錯誤使你嚇一跳。然而事實上,程序運行一次沒有錯誤并不表明下次運行時是否會發生錯誤。因此,如果潛在的運行期的錯誤在編譯期被及時發現,應用程序將變得非常穩定。Option Explicit語句決定編譯器是否要求所有的變量被顯式的聲明,語法如下:
Option Explicit
如果選擇On,則編譯器是否要求所有的變量被顯式的聲明,如果選擇Off,則編譯器是允許變量的隱式聲明。這樣以來,可不是一件好事,比如在代碼的編寫過程中,不小心敲錯了變量名,由于編譯器允許變量的隱式聲明,所以在程序編譯的時候,是不會發生錯誤的,但是在運行期可能會發生不可預期的錯誤。因此在代碼中最好不要用Option Explicit Off。Option Strict語句決定編譯器類型的隱式轉換方面的要求,語法如下:
VB.NET Option Strict
如果選擇On,則編譯器允許放寬的隱式類型轉換,如果選擇Off,則編譯器是不僅允許放寬的類型轉換,而且允許縮窄的類型轉換。對于放寬的類型轉換,一般不會發生數據的丟失或不正確的結果。例如,將一個整型(Integer)的變量轉換為長整型(Long)的變量是一個放寬的類型轉換,長整型可以包含所有整型變量的值。相反,從長整型向整型變量的轉換是一個縮窄的類型轉換,因為一些長整型的值是超出整型所表示的范圍的。
VB.NET默認放寬的類型轉換。例如在下面的代碼的第二行中將會自動發生放寬的類型轉換,賦值表達式右邊的變量自動轉換為長整型變量,以便能保存到變量b中。
- Dim a As Integer = 5
- Dim b As Long = a
自動發生的類型轉換,稱為“隱式類型轉換”。
現在來考慮相反的情況:
- Dim a As Long = 5
- Dim b As Integer = a
上面代碼的第二行,試圖進行隱式縮窄的類型轉換。編譯器是否允許這種轉換,決定于VB.NET Option Strict的設置,如果Option Strict設置為On,試圖進行隱式縮窄的類型轉換將會發生編譯錯誤;設置為Off,編譯器將自動在后臺進行類型轉換。這樣在程序運行時,如果實際要轉換的值超出目標類型的范圍,將會導致程序拋出異常。
對于某些程序,有時進行縮窄的類型轉換是必要的。因此程序員可能知道某個變量進行類型轉換時,會超出目標類型的范圍,而添加適當的代碼來處理可能發生的異常。這種情況可以通過適當的函數來進行顯式的類型轉換,例如:
- Dim a As Long = 5
- Dim b As Integer = CInt(a)
上面的變換即稱為“顯式的類型轉換”,因為程序員明確的要求進行整型變換。注意盡管從表面上來看,上面的代碼與前面的“隱式類型轉換”相比,多了一次函數調用,但是編譯后的代碼是一樣的,所以執行的效率和隱式類型轉換一樣。
【編輯推薦】