Pregunta

Acabo de darme cuenta de que puedes hacer esto en C #:

Unit myUnit = 5;

en lugar de tener que hacer esto:

Unit myUnit = new Unit(5);

¿Alguien sabe cómo puedo lograr esto con mis propias estructuras? Eché un vistazo a la estructura de la Unidad con el reflector y noté que se estaba utilizando el atributo TypeConverter, pero después de haber creado un TypeConverter personalizado para mi estructura todavía no podía obtener el compilador para permitir esta sintaxis conveniente.

¿Fue útil?

Solución

Es necesario proporcionar un operador de conversión implícito de int a Unit, así:

    public struct Unit
    {   // the conversion operator...
        public static implicit operator Unit(int value)
        {
            return new Unit(value);
        }
        // the boring stuff...
        private readonly int value;
        public int Value { get { return value; } }
        public Unit(int value) { this.value = value; }
    }

Otros consejos

Debe proporcionar un operador de conversión para la clase que toma un Int32.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top