Achtergrond van de vraag
De optie Option Strict is geïntroduceerd in Visual Basic .NET om de typeveiligheid te verhogen. In eerdere versies van de taal (VB6) gebeurden impliciete typeconversies, wat leidde tot onverwacht gedrag van programma's en moeilijk te traceren fouten. Een ingeschakelde Strict maakt het gedrag duidelijker en strikter getypeerd.
Probleem
Impliciete typeconversie (bijvoorbeeld het toewijzen van een string aan een numerieke variabele of het retourneren van verschillende types vanuit een functie) leidt tot fouten tijdens runtime. Projecten met Option Strict Off zijn vaak een bron van moeilijk te vinden bugs.
Oplossing
Bij Option Strict On zijn impliciete typeconversies niet toegestaan, en moeten alle variabele declaraties, parameters en geretourneerde typen van functies expliciet worden aangegeven. Dit voorkomt een hele klasse fouten al tijdens de compilatie en bevordert de hoge kwaliteit van de code.
Voorbeeldcode:
Option Strict On Dim x As Integer x = "123" ' Compilatiefout — expliciete conversie is verplicht x = CInt("123") ' OK Function GetNumber(ByVal input As String) As Integer Return input ' Compilatiefout End Function
Belangrijke kenmerken:
Waarom is Option Strict Off nodig, als Strict On handiger en veiliger is?
Option Strict Off wordt gebruikt ter ondersteuning van oudere code, waarin veel impliciete conversies al zijn ingebouwd (bijvoorbeeld migratie van VB6). In nieuwe projecten wordt aanbevolen om Strict in te schakelen voor betrouwbaardere en veiligere code.
Kan je de striktheid van typekeuze op bestandsniveau terugbrengen, als het project standaard Off is?
Ja, je kunt de richtlijn Option Strict On aan het begin van een afzonderlijke module of bestand toevoegen, en strikte typecontrole zal alleen op dat bestand van toepassing zijn.
' Aan het begin van het bestand: Option Strict On
Belemmerd Strict het gebruik van late binding via Object?
Ja, met Option Strict On kun je geen leden aanroepen van niet-herkenbare objecten tijdens compilatie (late binding). Je moet de objecten omzetten naar een bekend type via interfaces of alleen dynamisch werken met Off.
Een programmeur heeft Option Strict niet ingeschakeld, en bij het invoeren van gegevens vanuit een tekstveld TextBox werden de waarden rechtstreeks toegewezen aan numerieke variabelen. Bij het invoeren van verkeerde gegevens crashte het programma.
Voordelen:
Nadelen:
Een programmeur heeft Option Strict On ingeschakeld, alle conversies werden expliciet uitgevoerd via TryParse. Fouten werden op compilatieniveau opgevangen, uitzonderingen tijdens runtime zijn minimaal.
Voordelen:
Nadelen: