Função CType (Visual Basic)

Retorna o resultado da conversão explícita de uma expressão em um tipo de dados, objeto, estrutura, classe ou interface especificados.

Sintaxe

CType(expression, typename)

Partes

expression Qualquer expressão válida. Se o valor de expression estiver fora do intervalo permitido por typename, o Visual Basic lançará uma exceção.

typename Qualquer expressão que seja legal dentro de uma cláusula As em uma instrução Dim, ou seja, o nome de qualquer tipo de dados, objeto, estrutura, classe ou interface.

Comentários

Dica

Você também pode usar as seguintes funções para executar uma conversão de tipo:

  • Funções de conversão de tipo, como CByte, CDbl e CInt que executam uma conversão em um tipo de dados específico. Para obter mais informações, consulte Funções de conversão de tipo.
  • Operador DirectCast ou Operador TryCast. Esses operadores exigem que um tipo herde ou implemente o outro tipo. Eles podem fornecer um desempenho um pouco melhor do que CType ao converter de e para o tipo de dados Object.

CType é compilado embutido, o que significa que o código de conversão faz parte do código que avalia a expressão. Em alguns casos, o código é executado mais rapidamente porque nenhum procedimento é chamado para executar a conversão.

Se nenhuma conversão for definida de expression para typename (por exemplo, de Integer para Date), o Visual Basic exibirá uma mensagem de erro em tempo de compilação.

Se uma conversão falhar em tempo de execução, a exceção apropriada será gerada. Se uma conversão de restrição falhar, o resultado mais comum é OverflowException. Se a conversão for indefinida, é lançado um InvalidCastException. Por exemplo, isso pode acontecer se expression for do tipo Object e o respectivo tipo de tempo de execução não tiver conversão para typename.

Se o tipo de dados de expression ou typename for uma classe ou estrutura que você definiu, você poderá definir CType nessa classe ou estrutura como um operador de conversão. Isso faz com que CType atue como um operador sobrecarregado. Se você fizer isso, poderá controlar o comportamento de conversões de e para sua classe ou estrutura, incluindo as exceções que podem ser geradas.

Palavras-chave de conversão

Uma comparação das palavras-chave de conversão de tipo é a seguinte.

Palavra-chave Tipos de dados Relação de argumento Falha em tempo de execução
CType Qualquer tipo de dados A conversão de expansão ou de restrição deve ser definida entre os dois tipos de dados Gera InvalidCastException
Operador DirectCast Qualquer tipo de dados Um tipo deve herdar ou implementar o outro tipo Gera InvalidCastException
TryCast Apenas tipos de referência Um tipo deve herdar ou implementar o outro tipo Retorna Nada

Sobrecarga

O operador CType também pode ser sobrecarregado em uma classe ou estrutura definida fora do código. Se o código for convertido para ou de uma tal classe ou estrutura, certifique-se de entender o comportamento de seu operador CType. Para obter mais informações, consulte Procedimentos de operador.

Converter objetos dinâmicos

As conversões de tipo de objetos dinâmicos são executadas por conversões dinâmicas definidas pelo usuário que usam os métodos TryConvert ou BindConvert. Se você estiver trabalhando com objetos dinâmicos, use o método CTypeDynamic para converter o objeto dinâmico.

Exemplo

O exemplo a seguir usa a função CType para converter uma expressão no tipo de dados Single.

Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)

Para obter exemplos adicionais, consulte Conversões implícitas e explícitas.

Confira também