C #: Hvordan fungerer dette: Unit myUnit = 5;

stemmer
14

Jeg la merke til at du kan gjøre dette i C #:

Unit myUnit = 5;

i stedet for å måtte gjøre dette:

Unit myUnit = new Unit(5);

Vet noen hvordan jeg kan oppnå dette med mine egne structs? Jeg hadde en titt på Unit struct med reflektor og la merke til Typeconverter attributtet ble brukt, men etter at jeg opprettet en tilpasset Typeconverter for min struct jeg fortsatt ikke kunne få kompilatoren for å tillate dette praktisk syntaks.

Publisert på 14/10/2008 klokken 11:58
kilden bruker
På andre språk...                            


2 svar

stemmer
31

Du må oppgi en implisitt konvertering operatør fra int til Unit, som så:

    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; }
    }
Svarte 14/10/2008 kl. 12:06
kilden bruker

stemmer
2

Du må oppgi en støpt operatør for klassen som tar en Int32.

Svarte 14/10/2008 kl. 12:02
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more