Uso de operador para conversion

En esta oportunidad les dejo un código con el uso de _operator_ para realizar conversiones tanto explicitas como implícitas de un objeto (instancia de clase) a un tipo base (int,string,etc.).  Espero sea de utilidad… particularmente no me gusta usarlo pero es útil saber que existe al momento de leer código que pareciera no tener sentido🙂.

El habla por sí mismo:

namespace Demo.Operator
{
    class Program
    {
        static void Main(string[] args)
        {
            Persona _persona = new Persona(“Maria”,1,Convert.ToDateTime(“1980/01/01”));

            int _edad = (int)_persona;
            string _nombre = _persona;
            DateTime _fechaNacimiento = (DateTime)_persona;

            Console.ReadLine();
        }
    }

    public class Persona
    {
        private int _id;
        private string _nombre;
        private DateTime _fechaNacimiento;
       
        public Persona(string nombre,int edad,DateTime fechaNacimento)
        {
            _id = edad;
            _nombre = nombre;
            _fechaNacimiento = fechaNacimento;
        }
       

      //desde aqui lo que hace posible la magia!!!   

        static public implicit operator string(Persona persona)//Esto no sustituye al metodo ToString
        { return persona._nombre; }

        //la conversion a int debe ser solicitada (explicit)
        static public explicit operator int(Persona persona)
        { return persona._id; }
       //la conversion a DateTime debe ser solicitada (explicit)
        static public explicit operator DateTime(Persona persona)
        { return persona._fechaNacimiento;}        
    }
}

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s