Вопрос

Я только что заметил, что вы можете сделать это на C#:

Unit myUnit = 5;

вместо того, чтобы делать это:

Unit myUnit = new Unit(5);

Кто-нибудь знает, как я могу добиться этого с помощью своих собственных структур?Я взглянул на структуру Unit с отражателем и заметил, что используется атрибут TypeConverter, но после того, как я создал собственный TypeConverter для своей структуры, я все еще не мог заставить компилятор разрешить этот удобный синтаксис.

Это было полезно?

Решение

Вам необходимо предоставить неявный оператор преобразования из int в Unit, например:

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

Другие советы

Вам необходимо предоставить оператор приведения для класса, который принимает Int32.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top