Попалась задача, в которой необходимо создать класс, который можно кастить к 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;
}
Тестить!
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не работает приведение типов по индексу в массивах, выдает ошибку, что нет явного приведения типов, хотя я его указал:
В Form1_Resize есть функции которые меняют вид компонентов при изменении размера формы/фреймаКак по нажатию на Button отключить Form1_Resize чтобы его...