Option Strict On não permite conversões implícitas de '<type1>' em '<type2>'
Você tentou converter um tipo para outro tipo que pode não conter o valor, como um Long
para um Integer
, enquanto a opção de verificação de tipo (Instrução Option Strict) está definida para On
.
Esse tipo de conversão é chamado de conversão de restrição e é possível que ela falhe no tempo de execução. Por esse motivo, Option Strict On
não permite conversões de restrição implícitas.
ID do erro: BC30512
Para corrigir este erro
Determine se existe uma conversão de qualquer tipo de
<type1>
para<type2>
. Se ambos forem tipos elementares do Visual Basic ou se ambos forem instâncias de classes, você geralmente poderá fazer essa determinação consultando a tabela em Conversões de Expansão e Restrição.Se existir apenas uma conversão de restrição de
<type1>
para<type2>
, você deve usar a transmissão explícita. Se a conversão falhar, as palavras-chave CType Function e DirectCast Operator geram uma exceção em tempo de execução. A palavra-chave TryCast Operator aplica-se somente a tipos de referência e retorna Nothing se a conversão falhar.Se existir uma conversão de restrição e o programa puder tolerar uma falha em tempo de execução ou você estiver confiante de que uma falha em tempo de execução não é possível, você pode especificar
Option Strict Off
no início do código-fonte. Mas você ainda deve colocar a conversão em uma Instrução Try...Catch...Finally para evitar resultados inesperados ou término antecipado do programa.Se nenhuma conversão existir de
<type1>
para<type2>
, você deverá reavaliar a lógica de programa. Você pode ser capaz de gravar um código que possa atribuir valores a<type2>
correspondentes aos valores antecipados de<type1>
.Se não existir nenhuma conversão de
<type1>
para<type2>
e um dos tipos for uma classe ou estrutura que você definiu, será possível definir um operador de conversão desse tipo para ou de outro tipo. Para obter mais informações, confira Como definir um operador de conversão.Em todos os casos e como orientação geral, você deve evitar usar conversões de restrição, a menos que possa interceptar falhas em um bloco
Catch
e lidar com elas de forma eficaz.