Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Tipos primitivos
  2. Char Ascii e Unicode
  3. Operador CType
  4. Type Casting Numérico
  5. Box/Unbox
  6. GetType
  7. TypeOf
  8. DirectCast
  9. TryCast
  10. Val, Int e Fix
  11. Parse e TryParse
  12. Convert(.Net)
  13. Datetime
  14. Strict Mode

Casting e conversão são recursos muito utilizados no dia-a-dia em nossas aplicações. VB.NET possui funções para trabalhar com a conversão de dados entre tipos primitivos e também para Casting.

Em VB.Net podemos utilizar as funções nativas de conversão de tipos primitivos mostradas na sintaxe logo abaixo:

Sintaxe
CBool(expression)
CByte(expression)
CChar(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CObj(expression)
CSByte(expression)
CShort(expression)
CSng(expression)
CStr(expression)
CUInt(expression)
CULng(expression)
CUShort(expression)
Onde
expression: string, valor ou expressao válida para conversão
Retorno
expressao convertida para tipo de destino da função
Erro
Erro de compilação caso expression não seja suportada pela função.
Exemplo 1
Module VBModule
    Sub Main()
        Console.WriteLine(CBool(1 > 2))
        Console.WriteLine(CStr(False)) '"False"
        Console.WriteLine(CInt(False)) '0
        Console.WriteLine(CChar("5")) '5
        Console.WriteLine(CDbl("10.5")) '10.5
    End Sub
End Module
Saída
False
False
0
5
10.5

Para conversão de inteiro para char ASCII ou Unicode, VB.NET fornece as funções mostradas nas sintaxes abaixo:

Sintaxe: ASCII
Chr(code)
Asc(code)
Sintaxe: Unicode/UTF-16
ChrW(code)
AscW(code)
Onde
code: código Integer do carácter
Exemplo 2
Module VBModule
    Sub Main()
        Console.WriteLine(Chr(65))
        Console.WriteLine(ChrW(65))
        Console.WriteLine(Asc("A"c))
        Console.WriteLine(AscW("A"c))
    End Sub
End Module
Saída
FA
A
65
65

VB.NET fornece o operador CType que também pode ser utilizado para conversão de dados entre tipos como mostrado na sintaxe a seguir:

Sintaxe:
nome_variavel = CType(<expression>, typename)
Onde
<expression>: expressão válida para conversão em typename
typename: tipo de destino
Retorno
expression: convertido para typename
Exemplo 3
Module VBModule
    Sub Main()
        Console.WriteLine(Chr(65))
        Console.WriteLine(ChrW(65))
        Console.WriteLine(Asc("A"c))
        Console.WriteLine(AscW("A"c))
    End Sub
End Module
Saída
FA
A
65
65

Esse operador pode ser usado tanto para a conversão de tipos primitivos quanto para classes, interfaces e outros tipos de dados do usuário.

Exemplo 3
Module VBModule
    Sub Main()
        Console.WriteLine(CType("65", Integer))
        Console.WriteLine(CType(True, String))
        Console.WriteLine(CType(65, Object))
        Console.WriteLine(CType(123, String))
    End Sub
End Module
Saída
65
True
65
123

Caso a conversão não seja possível um dos seguintes erros pode ser lançado: InvalidCastException, OverflowException ou InvalidDateException.

Quando tentamos forçar o casting de um tipo numérico, de maior tamanho para um menor tamanho, um erro ou exception é lançado como no exemplo abaixo que utilizamos CByte para o casting.

Casting
UShort -> Byte  'Com perda de dados
Byte -> UShort 'Sem perda de dados
Exemplo 4
Imports System

Public Class Program
    Public Shared Sub Main()
          Dim valor1 As UShort = 256
          Dim valor2 As Byte = CByte(valor1) 'Byte não comporta short
    End Sub
End Class
Saída
Unhandled Exception:
System.OverflowException: Arithmetic operation resulted in an overflow.

Para contornar esse problema, utilizando a mesma CByte, fazemos uso do truncamento de bits mais significativos da variável de maior tamanho como mostrado logo abaixo:

Sintaxe
variavel And &HFF
Exemplo 5
Imports System

Public Class Program
    Public Shared Sub Main()
          Dim valor1 As UShort = 258 '0102h
          Dim valor2 As Byte = CByte(valor1 And &Hff) 'truncamento 01h para 00h
          Console.WriteLine(valor2)
    End Sub
End Class
Saída
2

Nesse casting acima, como “saímos” de um a variável do tipo short(16-bits) para byte(8-bits), houve a perda de dados.

O casting sem perda de dados ocorre quando um tipo de menor tamanho é convertido para um de maior tamanho como mostrado abaixo.

Exemplo 6
Imports System

Public Class Program
    Public Shared Sub Main()
          Dim valor2 As UShort = CByte(&Hff) 'Byte -> 00FFh
          Console.WriteLine(valor2)
    End Sub
End Class
Saída
255
  1. 03/06/2026 - versão inicial - conversão tipos primitivos, char, ctype e casting