Option Strict – příkaz
Omezuje implicitní převody datových typů pouze na rozšiřující převody, zakáže pozdní vazbu a zakáže implicitní zadávání, které vede k typu Object
.
Syntaxe
Option Strict { On | Off }
Součástky
Pojem | definice |
---|---|
On |
Nepovinné. Option Strict Povolí kontrolu. |
Off |
Nepovinné. Zakáže Option Strict kontrolu. |
Poznámky
Když Option Strict On
nebo Option Strict
se zobrazí v souboru, následující podmínky způsobí chybu v době kompilace:
Implicitní zužující převody
Pozdní vazba
Implicitní psaní, které má za následek typ
Object
Poznámka:
V konfiguracích upozornění, které můžete nastavit na stránce kompilace, Návrhář projektu (Visual Basic) existují tři nastavení, která odpovídají třem podmínkám, které způsobují chybu v době kompilace. Informace o tom, jak tato nastavení používat, naleznete v tématu Nastavení konfigurací upozornění v integrovaném vývojovém prostředí (IDE ) dále v tomto tématu.
Příkaz Option Strict Off
vypne kontrolu chyb a upozornění pro všechny tři podmínky, a to i v případě, že přidružené nastavení integrovaného vývojového prostředí (IDE) určí zapnutí těchto chyb nebo upozornění. Příkaz Option Strict On
zapne kontrolu chyb a upozornění pro všechny tři podmínky, a to i v případě, že přidružená nastavení integrovaného vývojového prostředí určí, aby se tyto chyby nebo upozornění vypnuly.
Pokud se použije, Option Strict
příkaz se musí zobrazit před všemi ostatními příkazy kódu v souboru.
Při nastavení jazyka Option Strict
On
Visual Basic zkontroluje, zda jsou datové typy zadány pro všechny programovací prvky. Datové typy lze zadat explicitně nebo zadat pomocí odvození místního typu. Zadání datových typů pro všechny programovací prvky se doporučuje z následujících důvodů:
Umožňuje podporu Technologie IntelliSense pro proměnné a parametry. Díky tomu můžete při psaní kódu zobrazit jejich vlastnosti a další členy.
Umožňuje kompilátoru provádět kontrolu typů. Kontrola typů pomáhá najít příkazy, které můžou v době běhu selhat kvůli chybám převodu typů. Identifikuje také volání metod u objektů, které tyto metody nepodporují.
Urychlí provádění kódu. Jedním z důvodů je to, že pokud pro programovací prvek nezadáte datový typ, kompilátor jazyka Visual Basic ho
Object
přiřadí typ. Zkompilovaný kód může být potřeba převést zpět a zpět meziObject
a jinými datovými typy, což snižuje výkon.
Implicitní zúžení chyb převodu
Implicitní zúžení chyb převodu dochází v případě implicitního převodu datového typu, který je zužující převod.
Visual Basic dokáže převést mnoho datových typů na jiné datové typy. Ke ztrátě dat může dojít, když je hodnota jednoho datového typu převedena na datový typ, který má menší přesnost nebo menší kapacitu. K chybě za běhu dochází v případě, že takový zužující převod selže. Option Strict
zajišťuje oznámení o těchto zužujících převodech v době kompilace, abyste se jim mohli vyhnout. Další informace naleznete v tématu Implicitní a explicitní převody a rozšiřující a zužující převody.
Převody, které můžou způsobit chyby, zahrnují implicitní převody, ke kterým dochází ve výrazech. Další informace naleznete v následujících tématech:
Při zřetězení řetězců pomocí &Operator, všechny převody na řetězce jsou považovány za rozšíření. Tyto převody tedy negenerují implicitní zužující chybu převodu, i když Option Strict
je zapnutá.
Při volání metody, která má argument, který má datový typ odlišný od odpovídajícího parametru, zužující převod způsobí chybu v době kompilace, pokud Option Strict
je zapnuta. Chybu v době kompilace se můžete vyhnout pomocí rozšiřujícího převodu nebo explicitního převodu.
Implicitní zužující chyby převodu jsou potlačeny v době kompilace pro převody z prvků v For Each…Next
kolekci na řídicí proměnnou smyčky. K tomu dochází i v případě, že Option Strict
je zapnutý. Další informace naleznete v části "Zúžení převodů" v části Pro každý... Next – příkaz.
Chyby pozdní vazby
Objekt je zpožděný při přiřazení k vlastnosti nebo metodě proměnné, která je deklarována jako typ Object
. Další informace najdete v tématu Časná a pozdní vazba.
Implicitní chyby typu objektu
K chybám implicitního typu objektu dochází v případě, že příslušný typ nelze odvodit pro deklarovanou proměnnou, takže je odvozen typ Object
. K tomu primárně dochází, když použijete Dim
příkaz k deklaraci proměnné bez použití As
klauzule a Option Infer
je vypnutý. Další informace naleznete v tématu Příkaz odvození možnosti a Specifikace jazyka Visual Basic.
U parametrů metody je klauzule volitelná, As
pokud Option Strict
je vypnutá. Pokud ale některý z parametrů používá As
klauzuli, musí ji všechny použít. Pokud Option Strict
je zapnutá, As
je klauzule vyžadována pro každou definici parametru.
Pokud deklarujete proměnnou bez použití As
klauzule a nastavíte ji na Nothing
, má proměnná typ Object
. V tomto případě, kdy Option Strict
je zapnutá a Option Infer
zapnutá, nedojde k žádné chybě v době kompilace. Příkladem je Dim something = Nothing
.
Výchozí datové typy a hodnoty
Následující tabulka popisuje výsledky různých kombinací zadání datového typu a inicializátoru v příkazu Dim.
Zadaný datový typ? | Inicializátor byl zadán? | Příklad | Výsledek |
---|---|---|---|
No | Ne | Dim qty |
Pokud Option Strict je vypnutá (výchozí), proměnná je nastavená na Nothing hodnotu .Pokud Option Strict je zapnutá, dojde k chybě v době kompilace. |
No | Ano | Dim qty = 5 |
Pokud Option Infer je zapnutá (výchozí), proměnná přebírá datový typ inicializátoru. Viz odvození místního typu.Pokud Option Infer je vypnutý a Option Strict je vypnutý, proměnná přebírá datový typ Object .Pokud Option Infer je vypnutý a Option Strict je zapnutý, dojde k chybě v době kompilace. |
Yes | No | Dim qty As Integer |
Proměnná se inicializuje na výchozí hodnotu datového typu. Další informace naleznete v tématu Dim – příkaz. |
Ano | Yes | Dim qty As Integer = 5 |
Pokud datový typ inicializátoru není konvertibilní na zadaný datový typ, dojde k chybě kompilace. |
Pokud není k dispozici příkaz Option Strict
Pokud zdrojový kód neobsahuje Option Strict
příkaz, použije se striktní nastavení Option na stránce Kompilace Návrhář projektu (Visual Basic). Stránka kompilace obsahuje nastavení, která poskytují další kontrolu nad podmínkami, které generují chybu.
Pokud používáte kompilátor příkazového řádku, můžete pomocí parametru -optionstrict kompilátoru určit nastavení pro Option Strict
.
Nastavení možnosti Strict v integrovaném vývojovém prostředí (IDE)
Poznámka:
Váš počítač může v následujících pokynech zobrazovat odlišné názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Tyto prvky jsou určeny edicí sady Visual Studio a použitým nastavením. Další informace najdete v tématu Přizpůsobení integrovaného vývojového prostředí.
V Průzkumník řešení vyberte projekt. V nabídce Projekt klepněte na příkaz Vlastnosti.
On the Compile tab, set the value in the Option Strict box.
Nastavení konfigurací upozornění v integrovaném vývojovém prostředí (IDE)
Pokud místo příkazu použijete stránku Kompilace, Návrhář projektu (Visual Basic),Option Strict
máte další kontrolu nad podmínkami, které generují chyby. Oddíl Konfigurace upozornění na stránce kompilace obsahuje nastavení, která odpovídají třem podmínkám, které způsobují chybu v době kompilace, když Option Strict
je zapnutá. Toto jsou tato nastavení:
Implicitní převod
Pozdní vazba; Volání může selhat za běhu
Implicitní typ; objekt předpokládat
Když nastavíte možnost Strict na Zapnuto, nastaví se všechna tři z těchto nastavení konfigurace upozornění na hodnotu Chyba. Když nastavíte možnost Striktní na vypnuto, všechna tři nastavení se nastaví na Žádné.
Jednotlivá nastavení konfigurace upozornění můžete změnit na Žádné, Upozornění nebo Chyba. Pokud jsou všechna tři nastavení konfigurace upozornění nastavená na Chyba, On
zobrazí se v Option strict
poli. Pokud jsou všechny tři nastaveny na Hodnotu Žádné, Off
zobrazí se v tomto poli. U jakékoli jiné kombinace těchto nastavení se zobrazí (vlastní).
Nastavení výchozího nastavení Option Strict pro nové projekty
Při vytváření projektu je nastavení Option Strict na kartě Kompilace nastaveno na nastavení Option Strict v dialogovém okně Možnosti .
Chcete-li nastavit Option Strict
v tomto dialogovém okně, v nabídce Nástroje klepněte na tlačítko Možnosti. V dialogovém okně Možnosti rozbalte položku Projekty a řešení a klepněte na tlačítko Výchozí hodnoty VB. Počáteční výchozí nastavení ve výchozím nastavení VB je Off
.
Nastavení možnosti Strict na příkazovém řádku
Do příkazu vbc zahrňte možnost kompilátoru -optionstrict.
Příklad 1
Následující příklady ukazují chyby v době kompilace způsobené implicitními převody typů, které zúžují převody. Tato kategorie chyb odpovídá implicitní konverzní podmínce na stránce kompilace.
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)
' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10
Příklad 2
Následující příklad ukazuje chybu v době kompilace způsobenou pozdní vazbou. Tato kategorie chyb odpovídá opožděné vazbě; volání může selhat v podmínce doby spuštění na stránce kompilace.
' If Option Strict is on, this late binding
' causes a compile-time error. If Option Strict
' is off, the late binding instead causes a
' run-time error.
Dim punchCard As New Object
punchCard.Column = 5
Příklad 3
Následující příklady ukazují chyby způsobené proměnnými, které jsou deklarovány s implicitním typem Object
. Tato kategorie chyb odpovídá implicitní typ; objekt předpokládá podmínku na kompilační stránce.
' If Option Strict is on and Option Infer is off,
' this Dim statement without an As clause
' causes a compile-time error.
Dim cardReaders = 5
' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the variable is set to Nothing.
Dim dryWall
' If Option Strict is on, this parameter without an
' As clause causes a compile-time error.
Private Sub DetectIntergalacticRange(ByVal photonAttenuation)
End Sub
Viz také
- Rozšíření a zúžení převodů
- Implicitní a explicitní převody
- Stránka Kompilovat, Návrhář projektu (Visual Basic)
- Příkaz Option Explicit
- Funkce pro převod typů
- Postupy: Přístup ke členům v objektu
- Vložené výrazy v XML
- Volný převod delegáta
- Pozdní vazba v řešeních pro systém Office
- -optionstrict
- Výchozí hodnoty pro Visual Basic, Projekty, dialogové okno Možnosti