Попалась задача, в которой необходимо создать класс, который можно кастить к int и double, вот так:
double d = new MyClass();
int a = (int)new MyClass();
После реализации операторов преобразования все касты работают, но
MyClass m = 3; выдает
"cannot convert initializer type int to target type MyClass"
явный каст MyClass m = (MyClass)3 тоже работает
Операторы:
public static implicit operator double(MyClass d)
{
return d.number;
}
public static explicit operator MyClass(int r)
{
MyClass result = new MyClass(r);
return result;
}
implicit - преобразования могут выполняться неявно (MyClass m = 3;)explicit - только по указанию пользователя, т.е явно (MyClass m = (MyClass)3;)Поменяйте explicit во втором случае на implicit, что бы можно было неявно кастовать MyClass m = 3;:
public static implicit operator MyClass(int r)
{
MyClass rational = new MyClass(r);
return rational;
}
Тестить!
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости