Перегрузить оператор = для пользовательского класса. - 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);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы