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


















