Megosztás a következőn keresztül:


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 OnVisual 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-vissza Object 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 Objectvannak 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 ObjectbeNothing, 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 Objectveszi 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.

  1. A Megoldáskezelő válasszon ki egy projektet. A Projekt menüben kattintson a Tulajdonságok elemre.

  2. 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ú Objectvá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