Compartir a través de


Elegir entre clases y estructuras

Actualización: noviembre 2007

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 Información general acerca del sistema de tipos común.

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 de 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 el libro titulado "Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" de Krzysztof Cwalina y Brad Abrams, publicado por Addison-Wesley, 2005.

Vea también

Otros recursos

Instrucciones de diseño de tipos

Instrucciones de diseño para desarrollar bibliotecas de clases