miércoles, 13 de febrero de 2008

Clases VS Estructuras

Una duda que me llega con relativa frecuencia es la relativa alas diferencias entre las clases y las estructuras. Vamos a aclarar dichos conceptos y su uso.

(Las próximas veces que algún desarrollador me pregunte, enlace al canto ! ;))

Aparentemente, las clases y las estructuras son muy similares. Ambas pueden contener miembros como campos y métodos, las dos requieren un constructor para crear una nueva instancia y heredan (en .NET Framework) del objeto Object.

La diferencia clave entre las clases y las estructuras es que las clases son Tipos por Referencia y las estructuras Tipos por Valor. A bajo nivel, esto significa las instancias de las clases se colocan en memoria en el Heap mientras que las instancias de datos de las estructuras lo hacen el el Stack.

Acceder al Stack está pensado para ser mas rápido y ligero, pero el almacenamiento de grandes cantidades de datos en dicho Stack puede lastrar el rendimiento general de la aplicación.

En la práctica, esto se traduce en que las estructuras son buena idea para objetos pequeños y ligeros que contienen instancias de datos relativamente pequeñas, o para objetos de corta persistencia.

Las clases son mejores para objetos más grandes, que almacenan mayor cantidad de datos y que se espera existan en memoria durante más tiempo.

Dicho queda, un saludo.

1 comentario:

Anónimo dijo...

Me pareció muy bueno tu artículo.