Ler em inglês

Partilhar via


A opção Strict On não permite conversões implícitas de '<tipo1>' para '<tipo2>'

Você tentou converter um tipo em outro tipo que pode não ser capaz de conter o valor, como a Long para um Integer, enquanto a opção de verificação de tipo (Option Strict Statement) está definida como On.

Esse tipo de conversão é chamado de conversão de estreitamento, e é possível que ela falhe em tempo de execução. Por esse motivo, Option Strict On não permite conversões de estreitamento implícito.

ID de erro: BC30512

Para corrigir este erro

  1. 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 Ampliando e estreitando conversões.

  2. Se existir apenas uma conversão de estreitamento de <type1> para <type2>, você deve usar a transmissão explícita. As palavras-chave Função CType e Operador DirectCast lançam uma exceção em tempo de execução se a conversão falhar. A palavra-chave TryCast Operator aplica-se apenas aos tipos de referência e retorna Nothing se a conversão falhar.

  3. Se existir uma conversão restrita e o programa puder tolerar uma falha em tempo de execução, ou se 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 incluir a conversão em uma tentativa... Pegar... Finalmente, bloqueio de declaração para evitar resultados inesperados ou encerramento antecipado do seu programa.

  4. Se não houver conversão de para <type2>, você deverá reavaliar a lógica do <type1> programa. Talvez seja possível escrever um código que possa atribuir valores correspondentes <type2> aos valores previstos de <type1>.

  5. Se não houver conversão de <type1> para <type2> e um dos tipos for uma classe ou estrutura que você definiu, você poderá definir um operador de conversão desse tipo para ou do outro tipo. Para obter mais informações, consulte Como definir um operador de conversão.

  6. Em todos os casos e como uma diretriz geral, você deve evitar o uso de conversões estreitas, a menos que você possa intercetar falhas em um Catch bloco e lidar com elas de forma eficaz.

Consulte também