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í psaní, které vede k Object typu.
Syntax
Option Strict { On | Off }
Součásti
| Pojem | Definice |
|---|---|
On |
Nepovinný parametr. Povolí Option Strict kontrolu. |
Off |
Nepovinný parametr. Zakáže Option Strict kontrolu. |
Poznámky
Pokud Option Strict On se v souboru zobrazí nebo , následující podmínky způsobí chybu při Option Strict kompilaci:
Implicitní zužující převody
Pozdní vazba
Implicitní zadání, které má za výsledek
Objecttyp
Poznámka
V konfiguracích upozornění, které můžete nastavit na stránce Kompilace v nástroji Project Designer (Visual Basic),existují tři nastavení, která odpovídají třem podmínkám, které způsobují chybu při kompilaci. Informace o použití těchto nastavení najdete v části Nastavení konfigurací upozornění v integrovaném vývojovém prostředí dále v tomto tématu.
Příkaz vypne kontrolu chyb a upozornění pro všechny tři podmínky, a to i v případě, že přidružená nastavení IDE určují, že se mají tyto chyby Option Strict Off nebo upozornění zapnout. Příkaz zapne kontrolu chyb a upozornění pro všechny tři podmínky, a to i v případě, že přidružená nastavení IDE určují, že se mají tyto chyby Option Strict On nebo upozornění vypnout.
Pokud použijete příkaz , musí se v souboru objevit před dalšími Option Strict příkazy kódu.
Když nastavíte na , Visual Basic zkontroluje, zda jsou datové Option Strict On typy zadány pro všechny programovací prvky. Datové typy lze zadat explicitně nebo pomocí místního odvozování typu. Pro všechny programovací prvky se doporučuje zadat datové typy z následujících důvodů:
Umožňuje podporu Technologie IntelliSense pro proměnné a parametry. To vám umožní zobrazit jejich vlastnosti a další členy při psaní kódu.
Umožňuje kompilátoru provádět kontrolu typů. Kontrola typů pomáhá najít příkazy, které selžou za běhu kvůli chybám převodu typu. Identifikuje také volání metod u objektů, které tyto metody nepodporují.
Urychluje provádění kódu. Jedním z důvodů je, že pokud nezadáte datový typ pro programovací prvek, kompilátor Visual Basic mu přiřadí
Objecttyp. Zkompilovaný kód může být muset převést tam a zpět mezi aObjectjinými datovými typy, což snižuje výkon.
Implicitní chyby zužující převod
Implicitní zužující chyby převodu nastanou, pokud existuje implicitní převod datového typu, který je zužující převod.
Visual Basic můžete 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 s menší přesností nebo menší kapacitou. Pokud takový zužující převod selže, dojde k chybě za běhu. Option Strict zajišťuje oznámení o těchto zužujících převodech za kompilace, abyste se jim mohli vyhnout. Další informace najdete v tématu Implicitní a explicitní převody a Rozšiřující a zužující převody.
Převody, které mohou způsobovat chyby, zahrnují implicitní převody, ke kterým dochází ve výrazech. Další informace najdete v následujících tématech:
Při zřetězování řetězců pomocí operátoru &se všechny převody na řetězce považují za rozšiřující. Tyto převody proto negenerují implicitní zužující chybu převodu, i když Option Strict je nastavená na .
Při volání metody, která má argument, který má datový typ jiný než odpovídající parametr, zužující převod způsobí chybu při kompilaci, pokud Option Strict je na . K chybě při kompilaci se můžete vyhnout použitím 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 kolekci na For Each…Next řídicí proměnnou smyčky. K tomu dochází i v Option Strict případě, že je nastavená na . Další informace najdete v části zužující převody v tématu For Each. Next – příkaz.
Chyby pozdní vazby
Objekt je s pozdní vazbou 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.
Chyby implicitního typu objektu
K implicitním chybám typu objektu dochází v případě, že pro deklarovanou proměnnou nelze odvodit vhodný typ, takže je Object odvozen typ typu . K tomu primárně dochází, když pomocí příkazu deklarujete proměnnou bez použití klauzule a Dim As je Option Infer vypnutá. Další informace najdete v tématu Option Infer – příkaz a Visual Basic Language Specification.
Pro parametry metody je As klauzule volitelná, pokud Option Strict je vypnutá. Pokud ale některý z parametrů používá As klauzuli , musí ji používat všechny. Pokud Option Strict je hodnota on, je pro každou As definici parametru vyžadována klauzule .
Pokud deklarujete proměnnou bez klauzule a nastavíte ji na As Nothing , má proměnná typ Object . Pokud je tato vlastnost nastavená na a je nastavená na , v tomto případě Option Strict Option Infer se při kompilaci nestává žádná chyba. Příkladem je Dim something = Nothing .
Výchozí datové typy a hodnoty
Následující tabulka popisuje výsledky různých kombinací určení datového typu a inicializátoru v příkazu Dim.
| Zadaný datový typ? | Inicializátor je zadaný? | Příklad | Výsledek |
|---|---|---|---|
| No | No | Dim qty |
Pokud Option Strict je vypnutá (výchozí hodnota), proměnná je nastavená na Nothing .Pokud Option Strict je tato vlastnost nastavená, dojde k chybě při kompilaci. |
| No | Ano | Dim qty = 5 |
Pokud Option Infer je on (výchozí), proměnná přebírá datový typ inicializátoru. Viz Odvození místního typu.Pokud Option Infer je Option Strict vypnutý a vypnutý, proměnná převezme datový typ Object .Pokud Option Infer je vypnutý Option Strict a je vypnutý, dojde k chybě při kompilaci. |
| Ano | No | Dim qty As Integer |
Proměnná je inicializována na výchozí hodnotu datového typu. Další informace najdete v tématu Příkaz Dim. |
| Ano | Ano | Dim qty As Integer = 5 |
Pokud datový typ inicializátoru nelze převést na zadaný datový typ, dojde k chybě při kompilaci. |
Pokud není k dispozici příkaz Option Strict
Pokud zdrojový kód neobsahuje příkaz , použije se striktní nastavení Option na stránce Compile Option Strict Page, Project Designer (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í možnosti kompilátoru -optionstrict určit nastavení pro Option Strict .
Nastavení parametru Strict v integrovaném vývojovém prostředí
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í (IDE).
V Průzkumník řešení vyberte projekt. V nabídce Project klikněte na Vlastnosti.
Na kartě Compile (Kompilovat) nastavte hodnotu v poli Option Strict (Možnost striktní).
Nastavení konfigurací upozornění v integrovaném vývojovém prostředí (IDE)
Při použití kompilované stránky, Project návrháře (Visual Basic) místo příkazu , máte další kontrolu nad podmínkami, které Option Strict 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 při kompilaci, když je tato možnost Option Strict nastavená. Toto jsou tato nastavení:
Implicitní převod
Pozdní vazba; volání může selhat za běhu
Implicitní typ; předpokládá se objekt
Pokud možnost Option Strict nastavíte na Hodnotu On, všechna tři z těchto nastavení konfigurace upozornění se nastaví na Chyba. Když možnost Option Strict nastavíte na Vypnuto, všechna tři nastavení se nastaví na Žádné.
Jednotlivě můžete každé nastavení konfigurace upozornění 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 poli Option strict . Pokud jsou všechny tři nastavené na Žá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ě Kompilovat nastaveno na možnost Striktní v dialogovém okně Možnosti.
Pokud chcete Option Strict nastavit v tomto dialogovém okně, v nabídce Nástroje klikněte na Možnosti. V dialogovém okně Možnosti rozbalte Projekty a řešení a potom klikněte na Výchozí hodnoty VB. Výchozí počáteční nastavení ve výchozím nastavení VB je Off .
Nastavení parametru 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 za kompilace způsobené implicitními převody typů, které zužují převody. Tato kategorie chyb odpovídá implicitnímu převodu 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 při kompilaci způsobenou pozdní vazbou. Tato kategorie chyb odpovídá pozdní vazbě. Volání by mohlo selhat za běhu 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ímu typu; předpokládaná podmínka objektu na stránce Kompilace.
' 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)
- Option Explicit – příkaz
- 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