Alternativet Strikt på tillåter inte implicita konverteringar från "<type1>" till "<type2>"
Du har försökt konvertera en typ till en annan typ som kanske inte kan innehålla värdet, till exempel till en Long
Integer
, medan typkontrollväxeln (Alternativ strikt instruktion) är inställd på On
.
Den här typen av konvertering kallas för en begränsad konvertering och det är möjligt att den misslyckas vid körning. Därför Option Strict On
tillåter inte implicita begränsade konverteringar.
Fel-ID: BC30512
Så här åtgärdar du det här felet
Avgör om en konvertering av någon typ finns från
<type1>
till<type2>
. Om båda är elementära visualiseringstyper, eller om båda är instanser av klasser, kan du vanligtvis göra detta genom att konsultera tabellen i Widening och Narrowing Conversions.Om det bara finns en begränsad konvertering från
<type1>
till<type2>
bör du använda explicit gjutning. Nyckelorden CType-funktion och DirectCast-operator genererar ett körningsundundansfel om konverteringen misslyckas. Nyckelordet TryCast-operator gäller endast för referenstyper och returnerar Ingenting om konverteringen misslyckas.Om det finns en begränsad konvertering och programmet kan tolerera ett körningsfel, eller om du är säker på att ett körningsfel inte är möjligt, kan du ange
Option Strict Off
i början av källkoden. Men du bör fortfarande omsluta konverteringen i ett försök... Fånga... Slutligen blockera instruktionen för att undvika oväntade resultat eller för tidig avslutning av programmet.Om det inte finns någon konvertering från
<type1>
till<type2>
måste du utvärdera programlogik igen. Du kanske kan skriva kod som kan tilldela värden som<type2>
motsvarar förväntade värden för<type1>
.Om det inte finns någon konvertering från
<type1>
till<type2>
och en av typerna är en klass eller struktur som du har definierat, kanske du kan definiera en konverteringsoperator från den typen till eller från den andra typen. Mer information finns i Så här definierar du en konverteringsoperator.I alla fall och som en allmän riktlinje bör du undvika att använda begränsade konverteringar om du inte kan fånga fel i ett
Catch
block och hantera dem effektivt.