Domanda

Ho appena notato che puoi farlo in C #:

Unit myUnit = 5;

invece di dover fare questo:

Unit myUnit = new Unit(5);

Qualcuno sa come posso raggiungere questo obiettivo con le mie strutture? Ho dato un'occhiata all'unità Struct con reflector e ho notato che veniva utilizzato l'attributo TypeConverter, ma dopo aver creato un TypeConverter personalizzato per la mia struttura non riuscivo ancora a ottenere il compilatore per consentire questa sintassi conveniente.

È stato utile?

Soluzione

Devi fornire un operatore di conversione implicito da int a Unit, in questo modo:

    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; }
    }

Altri suggerimenti

Devi fornire un operatore cast per la classe che accetta un Int32.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top