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