Alternativ strikt -instruktion
Begränsar implicita datatypskonverteringar till att endast bredda konverteringar, inte tillåter sen bindning och tillåter inte implicit inmatning som resulterar i en Object
typ.
Syntax
Option Strict { On | Off }
Delar
Period | Definition |
---|---|
On |
Valfritt. Aktiverar Option Strict kontroll. |
Off |
Valfritt. Inaktiverar Option Strict kontroll. |
Kommentarer
När Option Strict On
eller Option Strict
visas i en fil orsakar följande villkor ett kompileringsfel:
Implicit minskning av konverteringar
Sen bindning
Implicit inmatning som resulterar i en
Object
typ
Kommentar
I de varningskonfigurationer som du kan ange på kompileringssidan, Projektdesigner (Visual Basic) finns det tre inställningar som motsvarar de tre villkor som orsakar ett kompileringsfel. Information om hur du använder de här inställningarna finns i Ange varningskonfigurationer i IDE senare i det här avsnittet.
Instruktionen Option Strict Off
inaktiverar fel- och varningskontroll för alla tre villkor, även om de associerade IDE-inställningarna anger att dessa fel eller varningar ska aktiveras. Instruktionen Option Strict On
aktiverar fel- och varningskontroll för alla tre villkor, även om de associerade IDE-inställningarna anger att dessa fel eller varningar ska inaktiveras.
Om den används måste -instruktionen Option Strict
visas före andra kodinstruktioner i en fil.
När du anger Option Strict
till On
kontrollerar Visual Basic att datatyper har angetts för alla programmeringselement. Datatyper kan anges explicit eller anges med hjälp av lokal typinferens. Du rekommenderas att ange datatyper för alla dina programmeringselement av följande skäl:
Det aktiverar IntelliSense-stöd för dina variabler och parametrar. På så sätt kan du se deras egenskaper och andra medlemmar när du skriver kod.
Det gör att kompilatorn kan utföra typkontroll. Typkontroll hjälper dig att hitta instruktioner som kan misslyckas vid körning på grund av typkonverteringsfel. Den identifierar även anrop till metoder på objekt som inte stöder dessa metoder.
Det påskyndar körningen av kod. En orsak till detta är att om du inte anger någon datatyp för ett programmeringselement tilldelar Visual Basic-kompilatorn den
Object
typen. Kompilerad kod kan behöva konverteras fram och tillbaka mellanObject
och andra datatyper, vilket minskar prestandan.
Implicita konverteringsfel
Implicita konverteringsfel uppstår när det finns en implicit datatypkonvertering som är en begränsad konvertering.
Visual Basic kan konvertera många datatyper till andra datatyper. Dataförlust kan inträffa när värdet för en datatyp konverteras till en datatyp som har mindre precision eller mindre kapacitet. Ett körningsfel uppstår om en sådan begränsad konvertering misslyckas. Option Strict
säkerställer kompileringstidsmeddelande för dessa begränsade konverteringar så att du kan undvika dem. Mer information finns i Implicita och explicita konverteringar och Utvidga och begränsa konverteringar.
Konverteringar som kan orsaka fel inkluderar implicita konverteringar som inträffar i uttryck. Mer information finns i följande avsnitt:
När du sammanfogar strängar med hjälp av operatorn &, anses alla konverteringar till strängarna vara bredare. Dessa konverteringar genererar därför inte ett implicit begränsat konverteringsfel, även om Option Strict
det är aktiverat.
När du anropar en metod som har ett argument som har en annan datatyp än motsvarande parameter, orsakar en begränsad konvertering ett kompileringsfel om Option Strict
den är på. Du kan undvika kompileringstidsfelet med hjälp av en bredare konvertering eller en explicit konvertering.
Implicita konverteringsfel undertrycks vid kompileringstid för konverteringar från elementen i en For Each…Next
samling till loopkontrollvariabeln. Detta inträffar även om Option Strict
det är aktiverat. Mer information finns i avsnittet "Begränsa konverteringar" i För varje... Nästa instruktion.
Fel vid sen bindning
Ett objekt är sent bundet när det tilldelas till en egenskap eller metod för en variabel som deklareras vara av typen Object
. Mer information finns i Tidig och Sen bindning.
Implicita objekttypsfel
Implicita objekttypfel uppstår när en lämplig typ inte kan härledas för en deklarerad variabel, så en typ av Object
härleds. Detta inträffar främst när du använder en Dim
-instruktion för att deklarera en variabel utan att använda en As
-sats och Option Infer
är avstängd. Mer information finns i Alternativ härledningsinstrukation och Visual Basic Language Specification.
För metodparametrar är satsen valfri om Option Strict
den As
är inaktiverad. Men om någon parameter använder en As
-sats måste alla använda den. Om Option Strict
är på As
krävs -satsen för varje parameterdefinition.
Om du deklarerar en variabel utan att använda en As
sats och ställer in den på Nothing
har variabeln en typ av Object
. Inget kompileringsfel inträffar i det här fallet när Option Strict
är på och Option Infer
är aktiverat. Ett exempel på detta är Dim something = Nothing
.
Standarddatatyper och -värden
I följande tabell beskrivs resultatet av olika kombinationer av att ange datatypen och initieraren i en Dim-instruktion.
Angiven datatyp? | Har initieraren angetts? | Exempel | Resultat |
---|---|---|---|
Nej | Nej | Dim qty |
Om Option Strict är av (standardvärdet) är variabeln inställd på Nothing .Om Option Strict är på uppstår ett kompileringsfel. |
Nej | Ja | Dim qty = 5 |
Om Option Infer är på (standardvärdet) tar variabeln initiatorns datatyp. Se Slutsatsdragning av lokal typ.Om Option Infer är av och Option Strict är av tar variabeln datatypen Object .Om Option Infer är av och Option Strict är på uppstår ett kompileringsfel. |
Ja | Nej | Dim qty As Integer |
Variabeln initieras till standardvärdet för datatypen. Mer information finns i Dim-instruktion. |
Ja | Ja | Dim qty As Integer = 5 |
Om datatypen för initieraren inte kan konverteras till den angivna datatypen uppstår ett kompileringsfel. |
När ett strikt alternativ-uttryck inte finns
Om källkoden inte innehåller någon Option Strict
instruktion används inställningen Alternativ strikt på kompileringssidan, Projektdesigner (Visual Basic). På sidan Kompilering finns inställningar som ger ytterligare kontroll över de villkor som genererar ett fel.
Om du använder kommandoradskompilatorn kan du använda kompilatoralternativet -optionstrict för att ange en inställning för Option Strict
.
Så här anger du Alternativet strikt i IDE
Kommentar
Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassa IDE.
I Solution Explorer väljer du ett projekt. Klicka på Egenskaper på projektmenyn.
På fliken Kompilering anger du värdet i rutan Alternativ strikt.
Ange varningskonfigurationer i IDE
När du använder kompileringssidan , Projektdesignern (Visual Basic) i stället för en Option Strict
instruktion, har du ytterligare kontroll över de villkor som genererar fel. Avsnittet Varningskonfigurationer på kompileringssidan innehåller inställningar som motsvarar de tre villkor som orsakar ett kompileringsfel när Option Strict
den är på. Följande är dessa inställningar:
Implicit konvertering
Sen bindning; anropet kan misslyckas vid körning
Implicit typ; antaget objekt
När du anger Alternativet strikt till På är alla tre av dessa varningskonfigurationsinställningar inställda på Fel. När du anger Alternativet strikt till Av är alla tre inställningarna inställda på Ingen.
Du kan ändra varje varningskonfigurationsinställning individuellt till Ingen, Varning eller Fel. Om alla tre varningskonfigurationsinställningarna är inställda på Fel visas On
i rutan Option strict
. Om alla tre är inställda på Ingen visas Off
i den här rutan. För alla andra kombinationer av de här inställningarna visas (anpassad).
Så här anger du standardinställningen Alternativ strikt för nya projekt
När du skapar ett projekt anges inställningen Alternativ strikt på fliken Kompilering till inställningen Alternativ strikt i dialogrutan Alternativ .
Om du vill ange Option Strict
i den här dialogrutan går du till menyn Verktyg och klickar på Alternativ. I dialogrutan Alternativ expanderar du Projekt och lösningar och klickar sedan på VB-standardvärden. Den första standardinställningen i VB Defaults är Off
.
Så här anger du Alternativ strikt på kommandoraden
Inkludera alternativet -optionstrict compiler i vbc-kommandot.
Exempel 1
I följande exempel visas kompileringsfel som orsakas av implicita typkonverteringar som begränsar konverteringarna. Den här felkategorin motsvarar villkoret implicit konvertering på kompileringssidan.
' 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
Exempel 2
I följande exempel visas ett kompileringsfel som orsakas av sen bindning. Den här felkategorin motsvarar bindningen Sen. anropet kan misslyckas vid körning påkompileringssidan.
' 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
Exempel 3
Följande exempel visar fel som orsakas av variabler som deklareras med en implicit typ av Object
. Den här felkategorin motsvarar den implicita typen, objektets antagna villkor på kompileringssidan.
' 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
Se även
- Utvidga och begränsa konverteringar
- Implicita och explicita konverteringar
- Kompileringssida, Projektdesigner (Visual Basic)
- Explicit -instruktion för alternativ
- Typkonverteringsfunktioner
- Anvisningar: Få åtkomst till medlemmar i ett objekt
- Inbäddade uttryck i XML
- Avslappnad delegatkonvertering
- Sen bindning i Office-lösningar
- -optionstrict
- Dialogrutan Visual Basic Defaults, Projects, Options