Option Strict Utasítás
Az implicit adattípus-átalakításokat csak a konverziók szélesítésére, a késői kötés letiltására és az implicit gépelés letiltására korlátozza, amely típust Object
eredményez.
Syntax
Option Strict { On | Off }
Részek
Időszak | Definíció |
---|---|
On |
Opcionális. Engedélyezi az Option Strict ellenőrzést. |
Off |
Opcionális. Letiltja az Option Strict ellenőrzést. |
Megjegyzések
Amikor Option Strict On
egy fájlban megjelenik vagy Option Strict
megjelenik, a következő feltételek fordítási időt eredményeznek:
Implicit szűkítési konverziók
Késői kötés
Implicit gépelés, amely típust
Object
eredményez
Feljegyzés
A Fordítólapon (Project Tervező (Visual Basic) beállítható figyelmeztető konfigurációkban három beállítás felel meg a fordítási időt okozó három feltételnek. A beállítások használatáról a jelen témakör későbbi részében, az IDE-ben a figyelmeztető konfigurációk beállítása című témakörben talál további információt.
Az Option Strict Off
utasítás kikapcsolja mind a három feltétel hiba- és figyelmeztetés-ellenőrzését, még akkor is, ha a kapcsolódó IDE-beállítások megadják, hogy bekapcsolják ezeket a hibákat vagy figyelmeztetéseket. Az Option Strict On
utasítás mindhárom feltételnél bekapcsolja a hiba- és figyelmeztetés-ellenőrzést, még akkor is, ha a kapcsolódó IDE-beállítások megadják, hogy kikapcsolják ezeket a hibákat vagy figyelmeztetéseket.
Ha ezt használja, az utasításnak Option Strict
a fájl bármely más kódutasítása előtt kell megjelennie.
Ha be van állítva Option Strict
, a On
Visual Basic ellenőrzi, hogy az adattípusok meg vannak-e adva az összes programozási elemhez. Az adattípusok megadhatóak explicit módon, vagy helyi típusú következtetéssel is meghatározhatók. Az összes programozási elem adattípusainak megadása a következő okokból javasolt:
Lehetővé teszi az IntelliSense támogatását a változókhoz és paraméterekhez. Így kód beírása közben láthatja a tulajdonságokat és a többi tagot.
Lehetővé teszi, hogy a fordító típusellenőrzést végezzen. A típusellenőrzés segít megtalálni azokat az utasításokat, amelyek futásidőben meghiúsulhatnak a típuskonvertálási hibák miatt. Emellett azonosítja a metódusokra irányuló hívásokat olyan objektumokon, amelyek nem támogatják ezeket a metódusokat.
Felgyorsítja a kód végrehajtását. Ennek egyik oka, hogy ha nem ad meg adattípust egy programozási elemhez, a Visual Basic fordítója hozzárendeli a
Object
típushoz. Előfordulhat, hogy a lefordított kódnak oda-visszaObject
kell konvertálnia az adattípusokat, ami csökkenti a teljesítményt.
Implicit szűkítési konverziós hibák
Implicit szűkítési konverziós hibák akkor fordulnak elő, ha egy implicit adattípus-átalakítás szűkítő konverzió.
A Visual Basic számos adattípust képes más adattípusokká alakítani. Adatvesztés akkor fordulhat elő, ha egy adattípus értéke kisebb pontosságú vagy kisebb kapacitású adattípussá alakul át. Futásidejű hiba akkor fordul elő, ha egy ilyen szűkítési átalakítás meghiúsul. Option Strict
biztosítja a fordítási idő értesítését ezekről a szűkülő konverziókról, hogy elkerülhesse őket. További információkért lásd: Implicit és explicit konverziók, valamint a konvertálások bővítése és szűkítése.
A hibákat okozó konverziók közé tartoznak a kifejezésekben előforduló implicit konverziók. További információért tekintse át az alábbi témaköröket:
Ha sztringeket fűz össze a & operátorral, a sztringekre való összes átalakítást szélesítésnek tekintjük. Ezért ezek a konverziók nem okoznak implicit szűkítési konverziós hibát, még akkor sem, ha Option Strict
be van kapcsolva.
Ha olyan metódust hív meg, amelynek az adattípusa eltér a megfelelő paramétertől, a szűkítő átalakítás fordítási időt érintő hibát okoz, ha Option Strict
be van kapcsolva. A fordítási idő hibáját elkerülheti szélesítő átalakítással vagy explicit átalakítással.
A gyűjtemény elemeiből For Each…Next
a ciklusvezérlő változóba való konvertáláskor az implicit szűkítési konverziós hibák nem lesznek lefordítva. Ez akkor is előfordul, ha Option Strict
be van kapcsolva. További információkért lásd a "Konvertálások szűkítése" című szakaszt az Egyes... Következő utasítás.
Késői kötési hibák
Az objektumok késve vannak megkötve, ha egy változó tulajdonságához vagy metódusához vannak rendelve, és típusnak Object
vannak deklarálva. További információ: Korai és késői kötés.
Implicit objektumtípus hibái
Implicit objektumtípus-hibák akkor fordulnak elő, ha egy deklarált változóra nem lehet megfelelő típust kikövetkeztetni, ezért a rendszer egy típust Object
is kikövetkeztet. Ez elsősorban akkor fordul elő, ha egy utasítással Dim
záradék nélkül deklarál egy változót As
, és Option Infer
ki van kapcsolva. További információ: Option Infer Utasítás és a Visual Basic Language Specification.
A metódusparaméterek esetében a As
záradék nem kötelező, ha Option Strict
ki van kapcsolva. Ha azonban bármelyik paraméter záradékot As
használ, mindegyiknek használnia kell azt. Ha Option Strict
be van kapcsolva, a As
záradék minden paraméterdefinícióhoz szükséges.
Ha záradék használata As
nélkül deklarál egy változót, és azt állítja Object
beNothing
, a változó típusa . Ebben az esetben nem fordul elő fordítási idő hiba, ha Option Strict
be van kapcsolva és Option Infer
be van kapcsolva. Erre példa a .Dim something = Nothing
Alapértelmezett adattípusok és értékek
Az alábbi táblázat az adattípus és az inicializáló dim utasításban való megadásának különböző kombinációinak eredményeit ismerteti.
Adattípus megadva? | Inicializáló van megadva? | Példa | Eredmény |
---|---|---|---|
Nem | Nem | Dim qty |
Ha Option Strict ki van kapcsolva (az alapértelmezett), a változó Nothing értéke .Ha Option Strict be van kapcsolva, fordítási időhiba lép fel. |
Nem | Igen | Dim qty = 5 |
Ha Option Infer be van kapcsolva (az alapértelmezett), a változó az inicializáló adattípusát veszi fel. Lásd: Helyi típus következtetése.Ha Option Infer ki van kapcsolva, és Option Strict ki van kapcsolva, a változó a következő adattípust Object veszi fel: .Ha Option Infer ki van kapcsolva, és Option Strict be van kapcsolva, fordítási időhiba lép fel. |
Igen | Nem | Dim qty As Integer |
A változó inicializálása az adattípus alapértelmezett értékére történik. További információ: Dim Utasítás. |
Igen | Igen | Dim qty As Integer = 5 |
Ha az inicializáló adattípusa nem konvertálható a megadott adattípusra, fordítási időhiba lép fel. |
Ha egy beállítás szigorú utasítása nem jelenik meg
Ha a forráskód nem tartalmaz utasítástOption Strict
, a fordítási lapon a Project Tervező (Visual Basic) beállítás lesz használva. A fordítási lap olyan beállításokkal rendelkezik, amelyek további vezérlést biztosítanak a hibát okozó feltételek felett.
Ha parancssori fordítót használ, a -optionstrict compiler beállítással megadhatja a beállítását.Option Strict
A Szigorú beállítás beállítása az IDE-ben
Feljegyzés
Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a Visual Studio felhasználói felületének egyes elemeihez az alábbi utasításokban. Ezeket az elemeket a Visual Studio-kiadás és a használt beállítások határozzák meg. További információ: Az IDE személyre szabása.
A Megoldáskezelő válasszon ki egy projektet. A Projekt menüben kattintson a Tulajdonságok elemre.
A Fordítás lapon állítsa be az értéket a Szigorú beállítás mezőben.
Figyelmeztető konfigurációk beállítása az IDE-ben
Ha a Fordítás lapot használja, a Project Tervező (Visual Basic) utasítás helyett Option Strict
további vezérléssel rendelkezik a hibákat generáló feltételek felett. A Fordítás lap Figyelmeztetés konfigurációk szakasza olyan beállításokkal rendelkezik, amelyek megfelelnek azoknak a három feltételnek, amelyek fordítási időt eredményeznek, amikor Option Strict
be van kapcsolva. A következő beállításokat kell megadnia:
Implicit átalakítás
Késői kötés; a hívás futásidőben meghiúsulhat
Implicit típus; feltételezett objektum
Ha a Szigorú beállítást bekapcsolva állítja be, mindhárom figyelmeztető konfigurációs beállítás Hiba értékre van állítva. A Szigorúbeállítás kikapcsolásakor mindhárom beállítás Nincs értékre van állítva.
Az egyes figyelmeztetési konfigurációs beállításokat egyenként is módosíthatja None, Warning vagy Error (Nincs), Warning (Figyelmeztetés) vagy Error (Hiba) értékre. Ha mindhárom figyelmeztető konfigurációs beállítás Hiba értékre van állítva, On
megjelenik a Option strict
mezőben. Ha mind a három nincs értékre van állítva, Off
akkor ebben a mezőben jelenik meg. A beállítások bármely más kombinációjához (egyéni) jelenik meg.
Az Option Strict alapértelmezett beállításának beállítása új projektekhez
Projekt létrehozásakor a Fordítás lapon a Szigorú beállítás beállítás a Beállítások párbeszédpanelEn a Szigorú beállítás beállításra van állítva.
Option Strict
A párbeszédpanel beállításához kattintson az Eszközök menü Beállítások gombjára. A Beállítások párbeszédpanelen bontsa ki a Projektek és megoldások elemet, majd kattintson a VB Alapértelmezések parancsára. A VB Alapértelmezett értékének kezdeti alapértelmezett beállítása a következőOff
: .
A Szigorú beállítás beállítása a parancssorban
Adja meg a -optionstrict compiler lehetőséget a vbc parancsban.
1. példa
Az alábbi példák bemutatják a fordítási időt érintő hibákat, amelyeket az implicit típusú konverziók okoznak, amelyek szűkítik a konverziókat. Ez a hibakategória megfelel a fordítási lap implicit konverziós feltételének.
' 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
2. példa
Az alábbi példa egy fordítási idő hibát mutat be, amelyet a késői kötés okoz. Ez a hibakategória a Késői kötésnek felel meg; a hívás futásidőben meghiúsulhat a fordítási oldalon.
' 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
3. példa
Az alábbi példák az implicit típusú Object
változók által okozott hibákat mutatják be. Ez a hibakategória az Implicit típusnak felel meg; az objektum feltételezett feltétele a fordítási lapon.
' 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
Lásd még
- Átalakítások bővítése és szűkítése
- Implicit és explicit konverziók
- Lap fordítása, Project Tervező (Visual Basic)
- Explicit beállítási utasítás
- Típuskonvertálási függvények
- Útmutató: Objektum tagjainak elérése
- Beágyazott kifejezések XML-ben
- Nyugodt delegálás konvertálása
- Késői kötés az Office-megoldásokban
- -optionstrict
- Visual Basic Defaults, Projects, Options Dialog Box
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: