Freigeben über


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

Sie haben versucht, einen Typ in einen anderen Typ zu konvertieren, der den Wert möglicherweise nicht enthalten kann, z. B. Long zu Integer, während der Schalter für die Typüberprüfung (Option Strict Statement) auf Onfestgelegt ist.

Diese Art der Konvertierung wird als einschränkende Konvertierungbezeichnet, bei der es möglich ist, dass zur Laufzeit Fehler auftreten. Aus diesem Grund gestattet Option Strict On keine impliziten einschränkenden Konvertierungen.

Fehler-ID: BC30512

So beheben Sie diesen Fehler

  1. Ermitteln Sie, ob eine Konvertierung eines beliebigen Typs von <type1> in <type2>vorhanden ist. Wenn es sich bei beiden um elementare Visual Basic-Typen handelt, oder wenn es sich bei beiden um Instanzen von Klassen handelt, können Sie dies in der Regel anhand der Tabelle in Erweiternde und eingrenzende Konvertierungen (Visual Basic) feststellen.

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

  3. Wenn eine einschränkende Konvertierung vorhanden ist und Ihr Programm einen Laufzeitfehler tolerieren kann oder Sie zuversichtlich sind, dass ein Laufzeitfehler nicht möglich ist, können Sie Option Strict Off am Anfang des Quellcodes angeben. Dennoch sollten Sie die Konvertierung in einen Try...Catch...Finally Statement-Block einschließen, um unerwartete Ergebnisse oder eine vorzeitige Beendigung Ihres Programms zu vermeiden.

  4. Wenn keine Konvertierung von <type1> in <type2>vorhanden ist, müssen Sie die Programmlogik neu bewerten. Möglicherweise können Sie einen Code schreiben, mit dem Werte zu <type2> zugeordnet werden, die erwarteten Werten von <type1>entsprechen.

  5. Wenn keine Konvertierung von <type1> in <type2> vorhanden ist und einer der Typen einer von Ihnen definierten Klasse oder Struktur entspricht, können Sie möglicherweise einen Konvertierungsoperator dieses Typs für die Konvertierung in den (oder aus dem) anderen Typ definieren. Weitere Informationen finden Sie unter How to: Define a Conversion Operator.

  6. In sämtlichen Fällen und als allgemeine Richtlinie sollten Sie einschränkende Konvertierungen nur verwenden, wenn Sie Fehler in einem Catch -Block abfangen und effektiv behandeln können.

Siehe auch