I tried to create class Complex number in C# with two different constructor, the first constructor takes real part and imaginary part, the second constructor takes module and argument.
public class Complex
{
public Complex() { }
private Complex(double _re, double _im)
{
re = _re;
im = _im;
}
public static double Complex_FromCartesian(double _re, double _im)
{
return new Complex(_re, _im);
}
public static double Complex_FromPolar(double _mod, double _arg)
{
var _re = _mod * Math.Cos(_arg);
var _im = _mod * Math.Sin(_arg);
return new Complex(_re, _im);
}
public static Complex operator +(Complex num1, Complex num2)
{
return new Complex(num1.re + num2.re, num2.im + num2.im);
}
public static Complex operator -(Complex num1, Complex num2)
{
return new Complex(num1.re - num2.re, num2.im - num2.im);
}
public double Re { get; set; }
public double Im { get; set; }
private double re, im;
}
}
but I got the same error in both constructors

How to fix that?
Complex?Complexor override implicit cast inComplex.TimeSpanstruct is good example of this. I really don't understand whyComplexis not struct here.