Freigeben über


"Option Strict On" lässt keine impliziten Konvertierungen von '<Typ1>' in '<Typ2>' zu

Aktualisiert: November 2007

Option Strict On disallows implicit conversions from '<type1>' to '<type2>'

Sie haben versucht, einen Typ in einen anderen Typ zu konvertieren, der den Wert nicht enthalten kann, z. B. Long in Integer, während die Typüberprüfung (Option Strict-Anweisung) mit On aktiviert ist.

Diese Art der Konvertierung wird als einschränkende Konvertierung bezeichnet. Sie kann zur Laufzeit fehlschlagen. Aus diesem Grund lässt Option Strict On implizite einschränkende Konvertierungen nicht zu.

Fehler-ID: BC30512

So beheben Sie diesen Fehler

  1. Bestimmen Sie, ob eine Konvertierung eines beliebigen Typs von <type1> in <type2> vorhanden ist. Wenn beide elementare Visual Basic-Typen oder Instanzen von Klassen sind, können Sie dazu normalerweise die Tabelle unter Erweiternde und eingrenzende Konvertierungen verwenden.

  2. Wenn nur eine einschränkende Konvertierung von <type1> in <type2> vorhanden ist, sollten Sie die explizite Konvertierung verwenden. Die Schlüsselwörter CType-Funktion und DirectCast lösen eine Laufzeitausnahme aus, wenn die Konvertierung fehlschlägt. Das TryCast-Schlüsselwort gilt nur für Verweistypen und gibt Nothing (Visual Basic) zurück, wenn die Konvertierung fehlschlägt.

  3. Wenn eine einschränkende Konvertierung durchgeführt wird und das Programm einen Laufzeitfehler tolerieren kann oder Sie davon ausgehen, dass kein Laufzeitfehler auftritt, können Sie Option Strict Off am Anfang des Quellcodes angeben. Sie sollten die Konvertierung dennoch in einem Try...Catch...Finally-Anweisung (Visual Basic)-Block einfügen, um unerwartete Ergebnisse oder eine vorzeitige Beendigung des Programms zu verhindern.

  4. Wenn keine Konvertierung von <type1> in <type2> vorhanden ist, müssen Sie die Programmlogik neu bewerten. Sie können Code schreiben, der <type2> Werte zuweist, die den erwarteten <type1>-Werten entsprechen.

  5. Wenn keine Konvertierung von <type1> in <type2> vorhanden ist und einer der Typen eine von Ihnen definierte Klasse oder Struktur ist, können Sie einen Operator für die Konvertierung aus diesem Typ in den anderen Typ oder aus dem anderen Typ definieren. Weitere Informationen finden Sie unter Gewusst wie: Definieren eines Konvertierungsoperators.

  6. Generell und als allgemeine Richtlinie sollten Sie die einschränkende Konvertierung nur verwenden, wenn Sie die Fehler in einem Catch-Block ausmachen und sie effektiv behandeln können.

Siehe auch

Aufgaben

Gewusst wie: Definieren eines Konvertierungsoperators

Konzepte

Erweiternde und eingrenzende Konvertierungen

Referenz

Option Strict-Anweisung

CType-Funktion

DirectCast

TryCast

Nothing (Visual Basic)

Try...Catch...Finally-Anweisung (Visual Basic)