Resumo do tipo de dados (Visual Basic)Data Type Summary (Visual Basic)

A tabela a seguir mostra os tipos de dados do Visual Basic, seus tipos common language runtime suporte, a alocação de armazenamento nominal e os intervalos de valor.The following table shows the Visual Basic data types, their supporting common language runtime types, their nominal storage allocation, and their value ranges.

Tipo de Visual BasicVisual Basic type Estrutura do tipo Common language runtimeCommon language runtime type structure Alocação de armazenamento nominalNominal storage allocation Intervalo de valoresValue range
BoolianoBoolean Boolean Depende da implementação de plataformaDepends on implementing platform True ou FalseTrue or False
ByteByte Byte 1 byte1 byte 0 a 255 (não assinado)0 through 255 (unsigned)
Char (caractere único)Char (single character) Char 2 bytes2 bytes 0 a 65535 (não assinado)0 through 65535 (unsigned)
DateDate DateTime 8 bytes8 bytes 0:00:00 (meia-noite) em 1º de janeiro de 0001 a 11:59:59 PM em 31 de dezembro de 99990:00:00 (midnight) on January 1, 0001 through 11:59:59 PM on December 31, 9999
DecimalDecimal Decimal 16 bytes16 bytes 0 a + /-79.228.162.514.264.337.593.543.950.335 (+ /-7.9... E + 28) sem nenhum ponto decimal; 0 por meio de + /-7.9228162514264337593543950335 com 28 casas à direita da vírgula decimal;0 through +/-79,228,162,514,264,337,593,543,950,335 (+/-7.9...E+28) with no decimal point; 0 through +/-7.9228162514264337593543950335 with 28 places to the right of the decimal;

menor número diferente de zero é + /-0,0000000000000000000000000001 (+ /-1E-28) smallest nonzero number is +/-0.0000000000000000000000000001 (+/-1E-28)
Duplo (precisão dupla ponto flutuante)Double (double-precision floating-point) Double 8 bytes8 bytes -1, 79769313486231570E + 308 a - 4.94065645841246544 e-324 para valores negativos;-1.79769313486231570E+308 through -4.94065645841246544E-324 for negative values;

4.94065645841246544 e-324 1.79769313486231570 e + 308 para valores positivos4.94065645841246544E-324 through 1.79769313486231570E+308 for positive values
IntegerInteger Int32 4 bytes4 bytes -2.147.483.648 a 2.147.483.647 (assinado)-2,147,483,648 through 2,147,483,647 (signed)
Longo (inteiro longo)Long (long integer) Int64 8 bytes8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9.2 … E + 18 ) (assinado)-9,223,372,036,854,775,808 through 9,223,372,036,854,775,807 (9.2...E+18 ) (signed)
ObjectObject Object (classe)Object (class) 4 bytes na plataforma de 32 bits4 bytes on 32-bit platform

8 bytes na plataforma de 64 bits8 bytes on 64-bit platform
Qualquer tipo pode ser armazenado em uma variável de tipo ObjectAny type can be stored in a variable of type Object
SByteSByte SByte 1 byte1 byte -128 a 127 (assinado)-128 through 127 (signed)
Curto (inteiro curto)Short (short integer) Int16 2 bytes2 bytes -32.768 a 32.767 (assinado)-32,768 through 32,767 (signed)
Único (único ponto flutuante de precisão)Single (single-precision floating-point) Single 4 bytes4 bytes -3, 4028235E + 38 a - 1, 401298E-45 para valores negativos;-3.4028235E+38 through -1.401298E-45 for negative values;

1, 401298E-45 a 3, 4028235E + 38 para valores positivos1.401298E-45 through 3.4028235E+38 for positive values
Cadeia de caracteres (comprimento variável)String (variable-length) String (classe)String (class) Depende da implementação de plataformaDepends on implementing platform 0 a aproximadamente 2 bilhões de caracteres Unicode0 to approximately 2 billion Unicode characters
UIntegerUInteger UInt32 4 bytes4 bytes 0 e 4.294.967.295 (não assinado)0 through 4,294,967,295 (unsigned)
ULongULong UInt64 8 bytes8 bytes 0 e 18.446.744.073.709.551.615 (1.8... E + 19 ) (não assinado)0 through 18,446,744,073,709,551,615 (1.8...E+19 ) (unsigned)
Definido pelo usuário (estrutura)User-Defined (structure) (herdado de ValueType)(inherits from ValueType) Depende da implementação de plataformaDepends on implementing platform Cada membro da estrutura tem um intervalo determinado por seu tipo de dados e independentes de intervalos de outros membrosEach member of the structure has a range determined by its data type and independent of the ranges of the other members
UShortUShort UInt16 2 bytes2 bytes 0 a 65.535 (não assinado)0 through 65,535 (unsigned)

Na notação científica, "E" refere-se a uma potência de 10. In scientific notation, "E" refers to a power of 10. Para 3.56E + 2 significa 3,56 x 102 ou 356 e 3.56E-2 significa 3,56 / 102 ou 0.0356.So 3.56E+2 signifies 3.56 x 102 or 356, and 3.56E-2 signifies 3.56 / 102 or 0.0356.

Observação

Cadeias de caracteres que contém texto, use o StrConv função para converter do formato de um texto em outro.For strings containing text, use the StrConv function to convert from one text format to another.

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.In addition to specifying a data type in a declaration statement, you can force the data type of some programming elements by using a type character. Consulte digitar caracteres.See Type Characters.

Consumo de memóriaMemory Consumption

Quando você declara um tipo de dados elementares, não é seguro supor que seu consumo de memória é o mesmo que sua alocação de armazenamento nominal.When you declare an elementary data type, it is not safe to assume that its memory consumption is the same as its nominal storage allocation. Isso ocorre devido a considerações a seguir:This is due to the following considerations:

  • Atribuição de armazenamento.Storage Assignment. O common language runtime pode atribuir o armazenamento com base nas características da plataforma na qual o aplicativo está em execução atuais.The common language runtime can assign storage based on the current characteristics of the platform on which your application is executing. Se a memória está quase cheia, ele pode elementos do pacote seu declarados mais próximo juntos possível.If memory is nearly full, it might pack your declared elements as closely together as possible. Em outros casos, ele pode alinhar seus endereços de memória para limites de hardware natural para otimizar o desempenho.In other cases it might align their memory addresses to natural hardware boundaries to optimize performance.

  • Largura de plataforma.Platform Width. Atribuição de armazenamento em uma plataforma de 64 bits é diferente de atribuição em uma plataforma de 32 bits.Storage assignment on a 64-bit platform is different from assignment on a 32-bit platform.

Tipos de dados compostosComposite Data Types

As mesmas considerações se aplicam a cada membro de um tipo de dados compostos, como uma estrutura ou uma matriz.The same considerations apply to each member of a composite data type, such as a structure or an array. Você não pode depender simplesmente somar as alocações de armazenamento nominal de membros do tipo.You cannot rely on simply adding together the nominal storage allocations of the type's members. Além disso, há outras considerações, como o seguinte:Furthermore, there are other considerations, such as the following:

  • Sobrecarga.Overhead. Alguns tipos compostos têm requisitos de memória adicional.Some composite types have additional memory requirements. Por exemplo, uma matriz usa a memória extra para a própria matriz e também para cada dimensão.For example, an array uses extra memory for the array itself and also for each dimension. Em uma plataforma de 32 bits, essa sobrecarga é atualmente 12 bytes mais de 8 bytes para cada dimensão.On a 32-bit platform, this overhead is currently 12 bytes plus 8 bytes for each dimension. Em uma plataforma de 64 bits, esse requisito é duplicado.On a 64-bit platform this requirement is doubled.

  • Layout de armazenamento.Storage Layout. Com segurança, você não pode assumir que a ordem de armazenamento na memória é o mesmo que seu pedido da declaração.You cannot safely assume that the order of storage in memory is the same as your order of declaration. Você não pode fazer suposições sobre o alinhamento de bytes, como um limite de 2 ou 4 bytes.You cannot even make assumptions about byte alignment, such as a 2-byte or 4-byte boundary. Se você estiver definindo uma classe ou estrutura e você precisar controlar o layout de armazenamento de seus membros, você pode aplicar o StructLayoutAttribute de atributo para a classe ou estrutura.If you are defining a class or structure and you need to control the storage layout of its members, you can apply the StructLayoutAttribute attribute to the class or structure.

Sobrecarga de objetoObject Overhead

Um Object que faz referência a dados elementares ou compostos tipo usa 4 bytes além dos dados contidos no tipo de dados.An Object referring to any elementary or composite data type uses 4 bytes in addition to the data contained in the data type.

Consulte tambémSee Also

StrConv
StructLayoutAttribute
Funções de Conversão do TipoType Conversion Functions
Resumo da ConversãoConversion Summary
Caracteres de TipoType Characters
Uso Eficiente de Tipos de DadosEfficient Use of Data Types