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

A tabela a seguir mostra os tipos de dados Visual Basic, seus tipos de Common Language Runtime de suporte, sua alocação de armazenamento nominal e seus 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 valorValue range
BoolianoBoolean Boolean Depende da implementação da 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 +/-79228162514264337593543950335 (+/-7.9...E + 28) sem ponto decimal; 0 a +/-7.9228162514264337593543950335 com 28 casas à direita do 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;

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

4.94065645841246544 e-324 a 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)
Long (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 do 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)
Short (inteiro curto)Short (short integer) Int16 2 bytes2 bytes -32.768 a 32.767 (assinado)-32,768 through 32,767 (signed)
Único (ponto flutuante de precisão simples)Single (single-precision floating-point) Single 4 bytes4 bytes -3.4028235 e + 38 a-1.401298 E-45 para valores negativos;-3.4028235E+38 through -1.401298E-45 for negative values;

1.401298 e-45 a 3.4028235 E + 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 da plataformaDepends on implementing platform 0 a aproximadamente 2.000.000.000 caracteres Unicode0 to approximately 2 billion Unicode characters
UIntegerUInteger UInt32 4 bytes4 bytes 0 a 4.294.967.295 (não assinado)0 through 4,294,967,295 (unsigned)
ULongULong UInt64 8 bytes8 bytes 0 a 18446744073709551615 (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) (herda de ValueType)(inherits from ValueType) Depende da implementação da plataformaDepends on implementing platform Cada membro da estrutura tem um intervalo determinado por seu tipo de dados e independente dos intervalos dos 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)

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

Observação

Para cadeias de caracteres que contêm texto, use a função StrConv para converter de um formato de texto para 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 caracteres de tipo.See Type Characters.

Consumo de memóriaMemory Consumption

Quando você declara um tipo de dados elementar, 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 se deve às seguintes considerações:This is due to the following considerations:

  • Atribuição de armazenamento.Storage Assignment. O Common Language Runtime pode atribuir armazenamento com base nas características atuais da plataforma na qual seu aplicativo está sendo executado.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 estiver quase cheia, ela poderá empacotar seus elementos declarados o mais próximo 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 a limites de hardware naturais para otimizar o desempenho.In other cases it might align their memory addresses to natural hardware boundaries to optimize performance.

  • Largura da plataforma.Platform Width. A atribuição de armazenamento em uma plataforma de 64 bits é diferente da 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 composto, 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 de adicionar as alocações de armazenamento nominal dos 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 as seguintes:Furthermore, there are other considerations, such as the following:

  • Custos.Overhead. Alguns tipos compostos têm requisitos de memória adicionais.Some composite types have additional memory requirements. Por exemplo, uma matriz usa 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 é, no momento, 12 bytes, mais 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. Você não pode supor com segurança que a ordem de armazenamento na memória é a mesma que a sua ordem de 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 até 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 precisar controlar o layout de armazenamento de seus membros, poderá aplicar o atributo StructLayoutAttribute à 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 do objetoObject Overhead

Um Object referir-se a qualquer tipo de dados elementar ou composto 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