05 mayo, 2007

Tipos de Datos

En los siguientes días voy a estar escribiendo algunas entradas al blog sobre el .Net Framework. Me parece importante empezar escribiendo sobre cómo se clasifican los tipos de datos según la forma en la cual se almacenan en la memoria. Esta clasificación es la siguiente:

  • Tipos por Valor
  • Tipos por Referencia

Tipos por Valor.

Los tipos por valor son todos aquellos tipos que almacenan directamente su valor en el espacio de memoria de la variable.

Entre ellas tenemos:

  • Build-in (Son los tipos base provistos por el Framework.)
  • Enumeraciones
  • Estructuras

Características:

  • Se guardan en el espacio de memoria llamado stack
  • Derivan de system.valuetype
  • Almacenan 16 bytes o menos
  • Tienen un excelente performance

Consideraciones importantes:

  • Al pasar un tipo por valor en un argumento de un procedimiento se crea una copia del tipo por valor, por lo tanto no se modifica el valor de la variable original
  • El runtime está optimizado para el uso del int32 y el double para operaciones de punto flotante.

Tipos por Referencia.

Los tipos por referencia son todos aquellos tipos que en vez de almacenar el valor directamente, almacenan una dirección del heap, que es donde se almacena el contenido de la variable, podríamos decir que son punteros.

Características:

  • Todo tipo que no derive de system.valuetype es un tipo por referencia
  • La mayoría de los tipos son por referencia.
  • Su contenido se guarda en el heap
  • El Garbage Collection se encarga de eliminar el contenido de los ítems que ya no son referenciados
  • Al asignar una variable a otra variable, no se copia el valor, lo que se copia es la dirección de memoria.

Consideraciones Importantes:

El string es uno de los principales tipos por referencia. En .NET el string es inmutable, por lo cual cada vez que un string cambia, el runtime crea un nuevo string y abandona la dirección anterior, esto tiene un costo en el rendimiento. Para ser más eficientes en el manejo de string (cuando estos deben cambiar) se recomienda el uso del stringbuilder.

2 comentarios:

Unknown dijo...

Hola
Amigo muy gran aporte en tipo de datos en sigues así, me ayudo mucho tu aporte ya que recien estoy en este mundo de poo en visual.net.
Gracias.

Unknown dijo...

Hola
Amigo muy gran aporte en tipo de datos en sigues así, me ayudo mucho tu aporte ya que recien estoy en este mundo de poo en visual.net.
Gracias.