Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En la tabla siguiente se muestran los tipos de datos de 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; De 0 a +/-7.9228162514264337593543950335 con 28 posiciones a la derecha del decimal; número distinto de cero menor 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) |
| Objeto | 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) |
| Single (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 signo) |
| 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:
Asignación de almacenamiento. 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 plataforma. La asignación de almacenamiento 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 confiar simplemente en agregar las asignaciones de almacenamiento nominal 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.
Diseño de almacenamiento. 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 usa 4 bytes además de los datos contenidos en el tipo de datos.