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
eCInt
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 dadosObject
.
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.