Partilhar via


Resumo do tipo de dados (Visual Basic)

A tabela a seguir mostra os tipos de dados do Visual Basic, seus tipos de Common Language Runtime de suporte, sua alocação de armazenamento nominal e seus intervalos de valores.

Tipo do Visual Basic Estrutura do tipo Common Language Runtime Alocação nominal de armazenamento Intervalo de valores
Booleano Boolean Depende da plataforma de implementação True ou False
Byte Byte 1 byte 0 a 255 (não assinado)
Char (caractere único) Char 2 bytes 0 a 65535 (não assinado)
Date DateTime 8 bytes 0:00:00 (meia-noite) em 1 de janeiro de 0001 até 23:59:59 em 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 vírgula decimal; 0 a +/-7,9228162514264337593543950335 com 28 lugares à direita das casas decimais;

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

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

8 bytes na plataforma de 64 bits
Qualquer tipo pode ser armazenado em uma variável do tipo Object
SByte SByte 1 byte -128 a 127 (assinado)
Curto (inteiro curto) Int16 2 bytes -32.768 a 32.767 (assinado)
Único (ponto flutuante de precisão única) Single 4 bytes -3,4028235E+38 a -1,401298E-45 para valores negativos;

1,401298E-45 a 3,4028235E+38 para valores positivos
String (comprimento variável) String (classe) Depende da plataforma de implementação 0 a aproximadamente 2 bilhões de caracteres Unicode
UInteger UInt32 4 bytes 0 a 4.294.967.295 (não assinado)
ULong UInt64 8 bytes 0 a 18.446.744.073.709.551.615 (1,8...E+19 ) (não assinado)
Definido pelo usuário (estrutura) (herda de ValueType) Depende da plataforma de implementação Cada membro da estrutura tem um intervalo determinado pelo seu tipo de dados e independente dos intervalos dos outros membros
UShort UInt16 2 bytes 0 a 65.535 (não assinado)

Em notação científica, "E" refere-se a um poder de 10. Assim, 3,56E+2 significa 3,56 x 102 ou 356, e 3,56E-2 significa 3,56 / 102 ou 0,0356.

Observação

Para cadeias de caracteres que contêm texto, use a StrConv função 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. Consulte Caracteres de tipo.

Consumo de memória

Quando você declara um tipo de dados elementar, não é seguro assumir que seu consumo de memória é o mesmo que sua alocação nominal de armazenamento. Isto deve-se à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á agrupar os elementos declarados o mais próximo possível. Em outros casos, ele 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 simplesmente na soma das alocações nominais de armazenamento dos membros do tipo. Além disso, há outras considerações, como as seguintes:

  • Despesas gerais. 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 é dobrado.

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

Sobrecarga de objetos

Uma Object referência a qualquer tipo de dados elementar ou composto usa 4 bytes além dos dados contidos no tipo de dados.

Ver também