Frage

Ich habe gerade bemerkt, dass Sie in C # tun dies kann:

Unit myUnit = 5;

statt, um dies zu tun:

Unit myUnit = new Unit(5);

Wer weiß, wie ich das mit meinem eigenen structs erreichen kann? Ich hatte einen Blick auf die Einheit Struktur mit Reflektor und bemerkte das Attribut verwendet Typeconverter wurde, aber nachdem ich einen benutzerdefinierten Typeconverter für meine Struktur geschaffen Ich konnte immer noch nicht den Compiler bekommen, um diese bequem Syntax zu ermöglichen.

War es hilfreich?

Lösung

Sie müssen eine implizite Konvertierung Operator bereitzustellen, von int zu Einheit, etwa so:

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

Andere Tipps

Sie benötigen einen Cast-Operator für die Klasse bereitzustellen, die ein Int32 nimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top