Operadores de conversión
Los operadores de conversión convierten un objeto de un tipo a otro tipo. Los operadores de conversión pueden ser implícitos o explícitos. Los operadores de conversión implícitos no requieren que se especifique la conversión de tipos en el código fuente para realizar la conversión. Los operadores de conversión explícitos requieren que la conversión de tipos esté presente en el código fuente para que se realice la conversión.
La firma siguiente muestra el operador de conversión explícito de la clase Point para convertir entre Point y Size.
[Visual Basic]
Public Shared Function op_Explicit( _
ByVal p As Point _
) As Size
[C#]
public static Size op_Explicit(
Point p
);
No proporcione un operador de conversión si los usuarios finales no esperan claramente dicha conversión.
Idealmente, deberían existir datos de investigación del cliente para que se admita la definición de un operador de conversión. Como alternativa, la compatibilidad para definir el operador podría estar en forma de ejemplos en los que uno o más tipos similares necesitan dicha conversión.
No defina a operadores de conversión fuera del dominio de un tipo.
Por ejemplo, Int32, Double y Decimal son todos tipos numéricos, mientras que no lo es DateTime. La conversión de un tipo Double en un tipo DateTime no se debería implementar como un operador de conversión. Utilice un constructor para convertir un tipo en otro tipo que no está en el mismo dominio.
No proporcione un operador de conversión implícito si existe la posibilidad de perder precisión durante la conversión.
Por ejemplo, no debería haber una conversión implícita de Double a Single porque Double tiene una precisión mayor que la de Single. Para las conversiones con pérdida de precisión se puede proporcionar un operador de conversión explícito.
No inicie las excepciones desde conversiones implícitas.
El sistema llama a las conversiones implícitas; el usuario podría no estar informado de que se está llevando a cabo una conversión y encontrará dificultades para depurar el código.
Inicie una excepción System.InvalidCastException si una llamada a un operador de conversión produce una conversión con pérdida de definición y el contrato del operador no permite dichas conversiones con pérdida.
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 miembros
Instrucciones de diseño para desarrollar bibliotecas de clases