Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Este contenido se reimprime con permiso de Pearson Education, Inc. de Directrices de diseño de frameworks: Convenciones, expresiones y patrones para bibliotecas reutilizables de .NET, 2ª edición. Esa edición fue publicada en 2008, y el libro ha sido totalmente revisado en la tercera edición. Parte de la información de esta página puede estar obsoleta.
El tipo de valor de uso general se conoce con más frecuencia como estructura, su palabra clave de C#. En esta sección se proporcionan instrucciones para el diseño general de estructuras.
❌ NO proporcione un constructor sin parámetros para una estructura.
Siguiendo esta guía, se permiten crear matrices de estructuras sin tener que ejecutar el constructor en cada elemento de la matriz. Tenga en cuenta que C# no permite que las estructuras tengan constructores sin parámetros.
❌ NO defina tipos de valor mutable.
Los tipos de valor mutable tienen varios problemas. Por ejemplo, cuando un captador de propiedad devuelve un tipo de valor, el llamador recibe una copia. Dado que la copia se crea implícitamente, es posible que los desarrolladores no sepan que están mutando la copia y no el valor original. Además, algunos lenguajes (lenguajes dinámicos, en particular) tienen problemas al usar tipos de valor mutable porque incluso las variables locales, cuando se desreferencian, hacen que se realice una copia.
✔️ Asegúrese de que un estado en el que todos los datos de instancia estén establecidos en cero, falso o nulo (según corresponda) sea válido.
Esto evita la creación accidental de instancias no válidas cuando se crea una matriz de estructuras.
✔️ DEBE implementar IEquatable<T> en tipos de valor.
El método Object.Equals en tipos de valor produce la conversión boxing y su implementación predeterminada no es muy eficaz, ya que utiliza la reflexión. Equals puede tener un rendimiento mucho mejor y se puede implementar para que no cause la conversión boxing.
❌ NO extiendas ValueType explícitamente. De hecho, la mayoría de los idiomas impiden esto.
En general, las estructuras pueden ser muy útiles, pero solo se deben usar para valores pequeños, únicos e inmutables que no se encapsularán frecuentemente.
© Partes 2005, 2009 de Microsoft Corporation. Todos los derechos reservados.
Reimpreso con permiso de Pearson Education, Inc. de Framework Design Guidelines: Convenciones, Idiomas y Patrones para Bibliotecas .NET Reusables, 2ª Edición por Krzysztof Cwalina y Brad Abrams, publicado el 22 de octubre de 2008 por Addison-Wesley Professional como parte de la Serie Desarrollo de Microsoft Windows.