Перегрузить оператор = для пользовательского класса. - C#
Формулировка задачи:
Есть код класа:
Я хочу делать так:
Можно вызывать каждый раз конструктор, но мне интересно какие еще есть методы решения подобной задачи, что-бы конструктор вызывался сам, когда надо дабл привести к комплексному числу?
/// <summary> /// Provide work with complex numbers. /// </summary> public class Complex { #region Feilds and Propetries private double _real, _imagine; /// <summary> /// Get or set real part of complex number. /// </summary> public double Real { get { return this._real; } set { this._real = value; } } /// <summary> /// Get or set imaginary part of complex number. /// </summary> public double Imagine { get { return this._imagine; } set { this._imagine = value; } } /// <summary> /// Get angle between real and imaginary part. Also called argument. /// </summary> public double Angle { get { if (this.Imagine != 0d && this.Real > 0d) { return Math.Atan2(this.Imagine, this.Real); } if (this.Imagine != 0d && this.Real < 0d) { return Math.Atan2(this.Imagine, this.Real) + (this.Imagine >= 0d ? 1d : -1d) * Math.PI; } if (this.Imagine == 0d) { return this.Real >= 0d ? 0 : Math.PI; } return (this.Imagine >= 0d ? 1d : -1d) * Math.PI; } } /// <summary> /// Return resiprocal of complex number. /// </summary> public Complex Resiprocal { get { return new Complex(1d, 1d) / new Complex(this.Real, this.Imagine); } } #endregion #region Constructors /// <summary> /// Constructor of complex number. /// </summary> public Complex() : this(0d, 0d) { } /// <summary> /// Constructor of complex number. /// </summary> /// <param name="real">Defines real part of complex number.</param> public Complex(double real) : this(real, 0d) { } /// <summary> /// Constructor of complex number. /// </summary> /// <param name="real">Defines real part of complex number.</param> /// <param name="imagine">Defines imaginary part of complex number.</param> public Complex(double real, double imagine) { this.Real = real; this.Imagine = imagine; } /// <summary> /// Constructor of complex number. /// </summary> /// <param name="complex">Defines comlpex number from complex number.</param> public Complex(Complex complex) { this.Real = complex.Real; this.Imagine = complex.Imagine; } #endregion }
private List<Complex> Equation_4(List<int> indexes) { ... double a = (double)indexes[4], b = (double)indexes[3], c = (double)indexes[2], d = (double)indexes[1], e = (double)indexes[0]; ... Complex p = -3 * b * b / (8 * a * a) + c / a, q = b * b * b / (8 * a * a * a) - (b * c) / (2 * a * a) + d / a, r = -3 * b * b * b * b / (256 * a * a * a * a) + c * b * b / (16 * a * a * a) - b * d / (4 * a * a) + e / a; ... }
Решение задачи: «Перегрузить оператор = для пользовательского класса.»
textual
Листинг программы
public static implicit operator Complex(double d) { return new Complex(d, 0d); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д