Freigeben über


Option Strict On verbietet implizite Konvertierungen von "<type1>" in "<type2>"

Sie haben versucht, einen Typ in einen anderen Typ zu konvertieren, der den Wert möglicherweise nicht enthalten kann, z. B. eine Long in eine Integer, während der Typüberprüfungsschalter (Option Strict-Anweisung) auf Onfestgelegt ist.

Diese Art von Konvertierung wird als schmale Konvertierung bezeichnet und kann zur Laufzeit fehlschlagen. Aus diesem Grund Option Strict On verbietet die implizite Verengung von Konvertierungen.

Fehler-ID: BC30512

So beheben Sie diesen Fehler

  1. Bestimmen Sie, ob eine Konvertierung eines beliebigen Typs vorhanden ist von <type1> in <type2>. Wenn beide elementare Visual Basic-Typen sind oder beide Instanzen von Klassen sind, können Sie diese Bestimmung in der Regel vornehmen, indem Sie die Tabelle in Widening- und Narrowing Conversions konsultieren.

  2. Wenn nur eine Schmalungskonvertierung vorhanden <type1><type2>ist, sollten Sie explizite Umwandlungen verwenden. Die Schlüsselwörter "CType-Funktion" und "DirectCast-Operator" lösen eine Laufzeit ausnahme 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 Schmalungskonvertierung vorhanden ist und Ihr Programm einen Laufzeitfehler tolerieren kann oder Sie sicher sind, dass ein Laufzeitfehler nicht möglich ist, können Sie am Anfang des Quellcodes angeben Option Strict Off . Sie sollten die Konvertierung aber trotzdem in einen Try einschließen... Fangen... Schließlich blockieren Sie die Anweisung , um unerwartete Ergebnisse oder vorzeitige Beendigung Ihres Programms zu vermeiden.

  4. Wenn keine Konvertierung vorhanden <type1><type2>ist, müssen Sie die Programmlogik erneut auswerten. Möglicherweise können Sie Code schreiben, der Werte entsprechend <type2> den erwarteten Werten <type1>zuweisen kann.

  5. Wenn keine Konvertierung von <type1> zu <type2> und einer der Typen eine von Ihnen definierte Klasse oder Struktur ist, können Sie möglicherweise einen Konvertierungsoperator von diesem Typ in oder vom anderen Typ definieren. Weitere Informationen finden Sie unter How to: Define a Conversion Operator.

  6. In allen Fällen und als allgemeine Richtlinie sollten Sie die Verwendung von Schmalungskonvertierungen vermeiden, es sei denn, Sie können Fehler in einem Catch Block abfangen und effektiv damit umgehen.

Siehe auch