Resumen de tipos de datos (Visual Basic)
En la tabla siguiente se muestran Visual Basic de datos, sus tipos de Common Language Runtime compatibles, su asignación de almacenamiento nominal y sus intervalos de valor.
| Visual Basic tipo | 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 signo) |
| Char (carácter único) | Char | 2 bytes | De 0 a 65535 (sin signo) |
| Fecha | DateTime | 8 bytes | 0:00:00 (medianoche) del 1 de enero de 0001 a las 11:59:59 p. m. del 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; El número más pequeño distinto de cero es +/-0,000000000000000000000001 (+/-1E-28) † |
| Double (punto flotante de precisión doble) | Double | 8 bytes | -1,79769313486231570E+308 a -4,94065645841246544E-324 † para valores negativos; De 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 una plataforma de 32 bits 8 bytes en 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 † 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 signo) |
| 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 signo) |
† En la 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
Para las cadenas que contienen texto, use StrConv la 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
Cuando se declara un tipo de datos básico, no es seguro suponer que su consumo de memoria es el mismo que su asignación de almacenamiento nominal. Esto se debe a las consideraciones siguientes:
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, podría empaquetar los elementos declarados lo más estrechamente posible. En otros casos, podría alinear sus direcciones de memoria con los límites de hardware natural para optimizar el rendimiento.
Ancho de 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 confiar simplemente en agregar juntas 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 hacer suposiciones sobre la alineación de bytes, como un límite de 2 o 4 bytes. Si va a definir una clase o estructura y necesita controlar el diseño de almacenamiento de sus miembros, puede aplicar el atributo a StructLayoutAttribute la clase o estructura.
Sobrecarga de objetos
Una referencia a cualquier tipo de datos elemental o compuesto usa 4 bytes además de los datos Object contenidos en el tipo de datos.