Compartilhar 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 de armazenamento nominal Intervalo de valor
Booleano 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) de 1º de janeiro de 0001 às 23:59:59 pm 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 ponto decimal; 0 a +/-7.92281625142643375935439503355 com 28 lugares à direita do decimal;

o menor número diferente de zero é +/-0,0000000000000000000000000001 (+/-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 a 1,79769313486231570E+308 para valores positivos
Inteiro Int32 4 bytes -2.147.483.648 a 2.147.483.647 (assinado)
Long (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 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
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)
Definido pelo usuário (estrutura) (herda de ValueType) Depende da implementação da plataforma Cada membro da estrutura tem um intervalo determinado por seu 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 um poder 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

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 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, ele pode alinhar seus endereços de memória aos limites de hardware naturais 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 nominal dos membros do tipo. Além disso, há outras considerações, como a seguinte:

  • Sobrecarga. Alguns tipos de composição 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. Você não pode assumir com segurança que a ordem de armazenamento na memória é 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 StructLayoutAttribute atributo à classe ou à estrutura.

Sobrecarga de objeto

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

Consulte também