Resumen de tipos de datos (Visual Basic)

En la tabla siguiente se muestran los tipos de datos Visual Basic, sus tipos de Common Language Runtime compatibles, su asignación de almacenamiento nominal y sus intervalos de valores.

tipo de Visual Basic Estructura de tipos de Common Language Runtime Asignación de almacenamiento nominal Intervalo de valores
Boolean Boolean Depende de la implementación de la plataforma True o False
Byte Byte 1 byte De 0 a 255 (sin firmar)
Char (carácter único) Char 2 bytes De 0 a 65535 (sin firmar)
Fecha DateTime 8 bytes 0:00:00 (medianoche) el 1 de enero de 0001 a las 11:59:59 p. m. el 31 de diciembre de 9999
Decimal Decimal 16 bytes de 0 a +/-79.228.162.514.264.337.593.543.950.335 (+/-7.9...E+28) sin separador decimal; 0 a +/-7.9228162514264337593543950335 con 28 posiciones a la derecha del decimal;

el número menor distinto de cero es +/-0.0000000000000000000000000001 (+/-1E-28)
Double (punto flotante de precisión doble) Double 8 bytes -1.79769313486231570E+308 a -4.94065645841246544E-324 para valores negativos;

4.94065645841246544E-324 a 1.79769313486231570E+308 para valores positivos
Entero Int32 4 bytes -2.147.483.648 a 2.147.483.647 (firmado)
Long (entero largo) Int64 8 bytes -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 (9.2...E+18 ) (firmado)
Object Object (clase) 4 bytes en la plataforma de 32 bits

8 bytes en la plataforma de 64 bits
Cualquier tipo se puede almacenar en una variable de tipo Object
SByte SByte 1 byte -128 a 127 (firmado)
Short (entero corto) Int16 2 bytes -32.768 a 32.767 (firmado)
Único (punto flotante de precisión sencilla) Single 4 bytes -3.4028235E+38 a -1.401298E-45 para valores negativos;

1.401298E-45 a 3.4028235E+38 para valores positivos
Cadena (longitud variable) String (clase) Depende de la implementación de la plataforma De 0 a aproximadamente 2 mil millones de caracteres Unicode
UInteger UInt32 4 bytes De 0 a 4.294.967.295 (sin firmar)
ULong UInt64 8 bytes De 0 a 18.446.744.073.709.551.615 (1.8...E+19 ) (sin firmar)
Definido por el usuario (estructura) (hereda de ValueType) Depende de la implementación de la plataforma Cada miembro de la estructura tiene un intervalo determinado por su tipo de datos e independiente de los intervalos de los demás miembros
UShort UInt16 2 bytes De 0 a 65 535 (sin firmar)

En notación científica, "E" hace referencia a una potencia de 10. Por lo tanto, 3,56E+2 significa 3,56 x 102 o 356, y 3,56E-2 significa 3,56 / 102 o 0,0356.

Nota

En el caso de las cadenas que contienen texto, use la StrConv función para convertir de un formato de texto a otro.

Además de especificar un tipo de datos en una instrucción de declaración, puede forzar el tipo de datos de algunos elementos de programación mediante un carácter de tipo. Vea Caracteres de tipo.

Consumo de memoria

Al declarar un tipo de datos elemental, no es seguro suponer que su consumo de memoria es el mismo que su asignación de almacenamiento nominal. Esto se debe a las siguientes consideraciones:

  • Storage asignación. Common Language Runtime puede asignar almacenamiento en función de las características actuales de la plataforma en la que se ejecuta la aplicación. Si la memoria está casi llena, puede empaquetar los elementos declarados lo más cerca posible. En otros casos, podría alinear sus direcciones de memoria con límites de hardware natural para optimizar el rendimiento.

  • Ancho de la plataforma. Storage asignación en una plataforma de 64 bits es diferente de la asignación en una plataforma de 32 bits.

Tipos de datos compuestos

Las mismas consideraciones se aplican a cada miembro de un tipo de datos compuesto, como una estructura o una matriz. No puede basarse simplemente en agregar las asignaciones de almacenamiento nominales de los miembros del tipo. Además, hay otras consideraciones, como las siguientes:

  • En lo alto. Algunos tipos compuestos tienen requisitos de memoria adicionales. Por ejemplo, una matriz usa memoria adicional para la propia matriz y también para cada dimensión. En una plataforma de 32 bits, esta sobrecarga es actualmente de 12 bytes más 8 bytes para cada dimensión. En una plataforma de 64 bits, este requisito se duplica.

  • Storage Diseño. No se puede suponer de forma segura que el orden de almacenamiento en memoria es el mismo que el orden de declaración. Ni siquiera puede realizar suposiciones sobre la alineación de bytes, como un límite de 2 bytes o de 4 bytes. Si va a definir una clase o estructura y necesita controlar el diseño de almacenamiento de sus miembros, puede aplicar el StructLayoutAttribute atributo a la clase o estructura.

Sobrecarga de objetos

Una Object referencia a cualquier tipo de datos elemental o compuesto utiliza 4 bytes además de los datos contenidos en el tipo de datos.

Consulte también