С#:Как это работает :Единица myUnit = 5;
-
03-07-2019 - |
Вопрос
Я только что заметил, что вы можете сделать это на 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.
Не связан с StackOverflow