Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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.