Tipos Primitivos
Tipos Primitivos
Tipos Primitivos
Veamos en la siguiente tabla los tipos de datos definidos en .NET Framework y los alias
utilizados en Visual Basic .Net.
Las últimas filas mostradas en la tabla son tipos especiales que si bien son parte
del sistema de tipos comunes (CTS) no forman parte de la Common Language
Specification (CLS), es decir la especificación común para los lenguajes
"compatibles" con .NET, por tanto, si queremos crear aplicaciones que puedan
interoperar con todos los lenguajes de .NET, esos tipos no debemos usarlos como
valores de devolución de funciones ni como tipo de datos usado en los argumentos
de las funciones, propiedades o procedimientos.
Los tipos mostrados en la tabla son los tipos primitivos de .NET y por extensión de
Visual Basic .NET, es decir son tipos "elementales" para los cuales cada lenguaje
define su propia palabra clave equivalente con el tipo definido en el CTS de .NET
Framework. Todos estos tipos primitivos podemos usarlos tanto por medio de los
tipos propios de Visual Basic, los tipos definidos en .NET o bien como literales. Por
ejemplo, podemos definir un número entero literal indicándolo con el sufijo I:
12345I o bien asignándolo a un valor de tipo Integer o a un tipo Sytem.Int32 de
.NET. La única excepción de los tipos mostrados en la tabla es el tipo de datos
Object, este es un caso especial del que nos ocuparemos en la próxima lección.
El uso de estos caracteres nos puede resultar de utilidad particularmente para los
tipos de datos que no se pueden convertir en un valor doble.
Los tipos por valor son tipos de datos cuyo valor se almacena en la pila o en la
memoria "cercana", como los numéricos que hemos visto. Podemos decir que el
acceso al valor contenido en uno de estos tipos es directo, es decir se almacena
directamente en la memoria reservada para ese tipo y cualquier cambio que
hagamos lo haremos directamente sobre dicho valor, de igual forma cuando
copiamos valores de un tipo por valor a otro, estaremos haciendo copias
independientes.
Por otro lado, los tipos por referencia se almacenan en el "monto" (heap) o
memoria "lejana", a diferencia de los tipos por valor, los tipos por referencia lo
único que almacenan es una referencia (o puntero) al valor asignado. Si hacemos
copias de tipos por referencia, realmente lo que copiamos es la referencia
propiamente dicha, pero no el contenido.