Elegir entre clases y estructuras

Las clases son tipos de de referencia, mientras que las estructuras son tipos de valor. Los tipos de referencia se asignan en el montón y el recolector de elementos no utilizados controla la administración de memoria. Los tipos de valor se asignan en la pila o en línea, y se desasignan cuando salen del ámbito. En general, cuesta menos asignar y desasignar los tipos de valor. Sin embargo, si se utilizan en escenarios que requieren una cantidad significativa de conversiones boxing y unboxing, tienen un rendimiento bajo en comparación con los tipos de referencia. Para obtener más información, vea Conversión boxing y unboxing (Guía de programación de C#).

Para obtener información adicional sobre los tipos de valor y los tipos de referencia, vea Sistema de tipos comunes.

Considere definir una estructura en lugar de una clase si las instancias del tipo son pequeñas y normalmente tienen una duración limitada o suelen estar incrustadas en otros objetos.

No defina una estructura a menos que el tipo tenga todas las características siguientes:

  • Representa lógicamente un valor único, parecido a los tipos primitivos (integer, double, etc.).

  • Tiene un tamaño de instancia menor que 16 bytes.

  • Es inmutable.

  • No será necesario aplicarle conversión boxing con frecuencia.

Si no se cumple una o más de estas condiciones, cree un tipo de referencia en lugar de una estructura. No cumplir estas instrucciones puede tener un efecto negativo en el rendimiento.

Portions Copyright 2005 Microsoft Corporation. Reservados todos los derechos.

Portions Copyright Addison-Wesley Corporation. Reservados todos los derechos.

Para obtener más información sobre las directrices de diseño, consulte “las instrucciones de diseño de Framework: Convenciones, frases realizadas y modelos para libro de bibliotecas reutilizables de .NET” de Krzysztof Cwalina y Brad Abrams, publicados por Addison-Wesley, 2005.

Vea también

Otros recursos

Instrucciones de diseño de tipos

Instrucciones de diseño para desarrollar bibliotecas de clases