Saltar al contenido

Convirtiendo su propio camino

Para poder implementar la conversión o el reparto personalizado, debemos ser conscientes de que hay dos funciones que nos permiten hacerlo y que deben implementarse en nuestra clase si queremos que esto funcione. Una conversión definida por el usuario consiste en una conversión explícita opcional seguida de un operador de conversión implícito o explícito definido por el usuario, finalizado por una conversión explícita estándar opcional. Si estás interesado, mira esta impresionante guía en MSDN que explica todo, en detalle, sobre las conversiones definidas por el usuario y sus pasos.

La función responsable de la conversión implícita tiene este aspecto:

Convirtiendo su propio camino
Convirtiendo su propio camino
123staticpublicimplicitoperator<class;};(<type;valor){retorno<class;}(){<valor;=valor,};boolean;=falso};}

csharp

La función responsable de la conversión explícita tiene este aspecto:

123explicitoperador público estático<tipo&(clase&instancia);){retorno<instancia&;.valor&;}

csharp

Vamos a definir nuestra clase personalizada.

1234567891011121314151617181920212223242526 usando System;namespace UserDefined{publicclassConversions{publicclassCustomType{publicint Number {get;set;}publicbool magic {get; set;}staticpublicimplicitoperatorCustomType(intvalue){returnnewCustomType(){Número =valor, magia =falso};}staticpublicexplicitoperatorint(CustomType magic){retorno mágico. Número;}}estáticoevitar el Principal(String[] args){int aNúmero =3;CustomType magic = aNúmero; Consola.WriteLine($"From int: {aNúmero},
a: {Magia},
Con valor: {Magia.Número}"); Consola.Leer();}}

csharp

Llamar al código nos muestra cómo la conversión va de un tipo a otro.

123De int: 3,a: UserDefined.Conversions+CustomType,con valor: 3

bash

Añadiendo este pequeño código podemos fácilmente convertir hacia atrás.

12int bNumber =(int)magic;Console.WriteLine($"From: {mágico},
Con valor: {mágico.Número},
a: {bNúmero}");

csharp

Esto da como resultado el siguiente resultado.

123De: UserDefined.Conversions+CustomType,con valor: 3,to: 3

bash

Como puede ver, estas dos funciones son todo lo que se necesita para convertir entre tipos, sin embargo, este es un ejemplo bastante simple y puede ser mejorado. La conversión global está definida por los requisitos de su aplicación y lo que necesita implementar en esas dos funciones.