С#: Как это работает: Unit myUnit = 5;
Я только заметил, что вы можете сделать это на С#:
Unit myUnit = 5;
вместо этого:
Unit myUnit = new Unit(5);
Кто-нибудь знает, как я могу добиться этого с помощью своих собственных структур? Я взглянул на структуру Unit с отражателем и заметил, что используется атрибут TypeConverter, но после создания пользовательского TypeConverter для моей структуры я все еще не мог заставить компилятор разрешить этот удобный синтаксис.
Ответы
Ответ 1
Вам нужно предоставить неявный оператор преобразования из 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; }
}
Ответ 2
Вам необходимо предоставить оператор-подборщик для класса, который принимает Int32.