Каст произвольного класса к int и double

229
18 июня 2017, 15:14

Попалась задача, в которой необходимо создать класс, который можно кастить к 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;    
}    
Answer 1
  • 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;    
} 

Тестить!

READ ALSO
Шаблонная функция C#

Шаблонная функция C#

Требуется реализовать шаблонную функцию сложения на C#

547
Не работает приведение типов по индексу в массивах?

Не работает приведение типов по индексу в массивах?

Не работает приведение типов по индексу в массивах, выдает ошибку, что нет явного приведения типов, хотя я его указал:

354
По нажатию Button отключить свойство Form1 Resize

По нажатию Button отключить свойство Form1 Resize

В Form1_Resize есть функции которые меняют вид компонентов при изменении размера формы/фреймаКак по нажатию на Button отключить Form1_Resize чтобы его...

273
как добавить в список определенное кол-во вещей

как добавить в список определенное кол-во вещей

как добавить в список определенное кол-во вещей

253