Question

Je viens de remarquer que vous pouvez le faire en C #:

Unit myUnit = 5;

au lieu d'avoir à faire ceci:

Unit myUnit = new Unit(5);

Est-ce que quelqu'un sait comment je peux y arriver avec mes propres structures? J'ai jeté un coup d'œil à la structure Unit avec réflecteur et remarqué que l'attribut TypeConverter était utilisé, mais après avoir créé un TypeConverter personnalisé pour ma structure, je ne pouvais toujours pas demander au compilateur d'autoriser cette syntaxe pratique.

Était-ce utile?

La solution

Vous devez fournir un opérateur de conversion implicite de int en unité, comme suit:

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

Autres conseils

Vous devez fournir un opérateur de conversion pour la classe prenant un Int32.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top