Geschichte der Frage
Die Option Option Strict wurde in Visual Basic .NET eingeführt, um die Typsicherheit zu erhöhen. In früheren Versionen der Sprache (VB6) fanden implizite Typumwandlungen statt, die zu unerwartetem Verhalten des Programms und schwer fassbaren Fehlern führen konnten. Aktiviertes Strict macht das Verhalten deutlicher und strikt typisiert.
Problem
Implizite Typumwandlungen (z.B. Zuweisung einer Zeichenfolge an eine numerische Variable oder Rückgabe unterschiedlicher Typen aus einer Funktion) führen zu Laufzeitfehlern. Projekte mit Option Strict Off sind oft Quellen schwer identifizierbarer Bugs.
Lösung
Mit aktivierter Option Strict sind implizite Typumwandlungen nicht erlaubt, alle Variablen, Parameter und Rückgabetypen von Funktionen müssen explizit angegeben werden. Dies verhindert eine ganze Klasse von Fehlern bereits zur Kompilierungszeit und fördert die hohe Qualität des Codes.
Beispielscode:
Option Strict On Dim x As Integer x = "123" ' Kompilierungsfehler — explizite Umwandlung erforderlich x = CInt("123") ' OK Function GetNumber(ByVal input As String) As Integer Return input ' Kompilierungsfehler End Function
Wichtige Merkmale:
Warum ist Option Strict Off nützlich, wenn es mit Strict On bequemer und sicherer ist?
Option Strict Off wird verwendet, um alten Code zu unterstützen, in dem viele implizite Umwandlungen bereits vorhanden sind (z.B. Migration von VB6). In neuen Projekten wird empfohlen, Strict zu aktivieren, um zuverlässigen und sicheren Code zu haben.
Kann man die Striktheit der Typwahl auf Datei-Ebene zurücksetzen, wenn im Projekt standardmäßig Off ist?
Ja, man kann die Direktive Option Strict On zu Beginn eines einzelnen Moduls oder einer Datei hinzufügen, und die strenge Typprüfung wird nur auf diese Datei angewendet.
' Am Anfang der Datei: Option Strict On
Beeinträchtigt Strict die Verwendung von Late Binding über Object?
Ja, mit Option Strict On kann man keine Mitglieder von zur Kompilierungszeit nicht erkennbaren Objekten (Late Binding) aufrufen. Man muss die Objekte über Schnittstellen auf einen bekannten Typ umwandeln oder dynamische Arbeiten nur mit Off durchführen.
Der Programmierer hat Option Strict nicht aktiviert, und beim Eingeben von Daten aus dem Textfeld TextBox wurden die Werte direkt numerischen Variablen zugewiesen. Bei fehlerhaften Eingaben stürzte das Programm ab.
Vorteile:
Nachteile:
Der Programmierer aktivierte Option Strict On, alle Umwandlungen wurden explizit über TryParse durchgeführt. Die Fehler wurden zur Kompilierungszeit erkannt, die Ausnahmen zur Laufzeit sind minimal.
Vorteile:
Nachteile: