Option Strict On no permite conversiones implícita de "<tipo1>" en "<tipo2>".
Intentó convertir un tipo en otro tipo que quizás no pueda contener el valor, como Long
en Integer
, mientras que el modificador de comprobación de tipo (Option Strict Statement) está establecido en On
.
Este tipo de conversión se denomina conversión de restriccióny es posible que genere un error en tiempo de ejecución. Por este motivo, Option Strict On
no permite conversiones de restricción implícitas.
Identificador de error: BC30512
Para corregir este error
Determine si existe una conversión de cualquier tipo de
<type1>
a<type2>
. Si ambos son tipos elementales de Visual Basic o instancias de clases, esta determinación se puede realizar por lo general consultando la tabla de Widening and Narrowing Conversions.Si solo existe una conversión de restricción de
<type1>
a<type2>
, debe usar la conversión explícita. Las palabras clave función CType y el operador DirectCast lanzan una excepción de tiempo de ejecución si se produce un error de conversión. La palabra clave operador TryCast solo se aplica a tipos de referencia y devuelve Nada si se produce un error de conversión.Si existe una conversión de restricción y el programa puede tolerar un error de tiempo de ejecución o está seguro de que un error de tiempo de ejecución no es posible, puede especificar
Option Strict Off
al principio del código fuente. No obstante, debe incluir la conversión en un bloque de Instrucción Try...Catch...Finally para evitar resultados inesperados o una finalización prematura del programa.Si no existe ninguna conversión de
<type1>
a<type2>
, debe volver a evaluar la lógica del programa. Es posible que pueda escribir código que pueda asignar valores a<type2>
correspondientes a los valores anticipados de<type1>
.Si no existe ninguna conversión de
<type1>
a<type2>
y uno de los tipos es una clase o estructura que ha definido, quizás pueda definir un operador de conversión a partir de ese tipo o del otro. Para obtener más información, consulta How to: Define a Conversion Operator.En todos los casos y como norma general, debe evitar el uso de conversiones de restricción a menos que pueda interceptar errores en un bloque
Catch
y tratarlos de manera eficaz.