Resumo do tipo de dados (Visual Basic)

A tabela a seguir mostra os tipos de dados do Visual Basic, os tipos de common language runtime com suporte, a alocação de armazenamento nominal e os intervalos de valores.

Tipo de Visual Basic Estrutura de tipo de common language runtime Alocação de armazenamento nominal Intervalo de valor
Booliano Boolean Depende da implementação da plataforma True ou False
Byte Byte 1 byte 0 a 255 (sem sinal)
Char (caractere único) Char 2 bytes 0 a 65535 (sem sinal)
Data DateTime 8 bytes 0:00:00 (meia-noite) em 1º de janeiro, 0001 a 23:59:59 de 31 de dezembro de 9999
Decimal Decimal 16 bytes 0 a +/-79.228.162.514.264.337.593.543.950.335 (+/-7.9...E+/-28) sem ponto decimal; 0 a +/-7,9228162514264337593543950335 com 28 casas à direita do decimal;

o menor número diferente de zero é +/-0,0000000000000000000000000001 (+/-1E-28)
Duplo (um ponto flutuante de precisão dupla) Double 8 bytes -1,79769313486231570E+308 a -4,94065645841246544E-324 para valores negativos;

4,94065645841246544E-324 a 1,79769313486231570E+308 para valores positivos
Inteiro Int32 4 bytes -2.147.483.648 a 2.147.483.647 (assinado)
Longo (um inteiro longo) Int64 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9.2...E+18 ) (assinado)
Objeto Object (classe) 4 bytes em plataforma de 32 bits

8 bytes em plataforma de 64 bits
É possível armazenar qualquer tipo em uma variável do tipo Object
SByte SByte 1 byte -128 a 127 (assinado)
Curto (um inteiro curto) Int16 2 bytes -32.768 a 32.767 (assinado)
Simples (ponto flutuante de precisão simples) Single 4 bytes -3.4028235E+38 a -1.401298E-45 para valores negativos;

1,401298E-45 a 3.4028235E+38 para valores positivos
Cadeia de caracteres (comprimento variável) String (classe) Depende da implementação da plataforma 0 a aproximadamente 2 bilhões de caracteres Unicode
UInteger UInt32 4 bytes 0 a 4.294.967.295 (sem sinal)
ULong UInt64 8 bytes 0 a 18,446,744,073,709,551,615 (1.8...E+19 ) (sem sinal)
Definida pelo usuário (estrutura) (herda de ValueType) Depende da implementação da plataforma Cada membro da estrutura tem um intervalo determinado pelo tipo de dados e independente dos intervalos dos outros membros
UShort UInt16 2 bytes 0 a 65.535 (sem sinal)

Na notação científica, "E" refere-se a uma potência de 10. Portanto, 3.56E+2 significa 3.56 x 102 ou 356 e 3.56E-2 significa 3.56 /102 ou 0,0356.

Observação

Nas cadeias de caracteres que contêm texto, use a função StrConv para converter de um formato de texto para outro.

Além de especificar um tipo de dados em uma instrução de declaração, você pode forçar o tipo de dados de alguns elementos de programação usando um caractere de tipo. Ver Caracteres de tipo.

Consumo de memória

Quando você declara um tipo de dados elementar, não é garantido supor que seu consumo de memória seja o mesmo da sua alocação de armazenamento nominal. Isso ocorre devido às seguintes considerações:

  • Atribuição de armazenamento. O common language runtime pode atribuir armazenamento com base nas características atuais da plataforma na qual seu aplicativo está sendo executado. Se a memória estiver quase cheia, ela poderá empacotar seus elementos declarados o mais próximo possível. Em outros casos, ela pode alinhar seus endereços de memória aos limites naturais de hardware para otimizar o desempenho.

  • Largura da plataforma. A atribuição de armazenamento em uma plataforma de 64 bits é diferente da atribuição em uma plataforma de 32 bits.

Tipos de dados compostos

As mesmas considerações se aplicam a cada membro de um tipo de dados composto, como uma estrutura ou uma matriz. Você não pode confiar em simplesmente adicionar as alocações de armazenamento nominais dos membros do tipo. Além disso, há outras considerações, como a seguinte:

  • Sobrecarga. Alguns tipos compostos têm requisitos de memória adicionais. Por exemplo, uma matriz usa memória extra para a própria matriz e também para cada dimensão. Em uma plataforma de 32 bits, essa sobrecarga atualmente é de 12 bytes, mais 8 bytes para cada dimensão. Em uma plataforma de 64 bits, esse requisito é o dobro.

  • Layout de armazenamento. Você não pode supor com segurança que a ordem de armazenamento na memória seja a mesma que sua ordem de declaração. Você não pode sequer fazer suposições sobre o alinhamento de bytes, como um limite de 2 bytes ou 4 bytes. Se você estiver definindo uma classe ou estrutura e precisar controlar o layout de armazenamento de seus membros, poderá aplicar o atributo StructLayoutAttribute à classe ou à estrutura.

Sobrecarga por objeto

Uma referência Object a qualquer tipo de dados elementar ou composto usa 4 bytes a mais do que os dados contidos no tipo de dados.

Confira também