Когда вы предоставляете оператор для своего класса, типы параметров для реализации оператора определяют, какие ситуации вы обрабатываете.
Для иллюстрации:
// Declare which operator to overload (+), the types
// that can be added (two Complex objects), and the
// return type (Complex):
public static Complex operator +(Complex c1, Complex c2)
{
return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);
}
Этот метод определяет, что нужносделать, если вы хотите добавить два Complex
числа.
Если вы попытаетесь использовать это с, скажем, double
и Complex
, компиляция завершится неудачей.
В вашемВ этом случае вам нужно просто объявить обе версии:
public static MyClass operator *(MyClass c1, MyClass c2)
{
return ...
}
public static MyClass operator *(double n, MyClass c)
{
return ...
}