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 StrictOnVisual 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 mezi Object 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 Nothinghodnotu .

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í.

  1. V Průzkumník řešení vyberte projekt. V nabídce Projekt klepněte na příkaz Vlastnosti.

  2. 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é