C#问题,复数窗体实验求解

  1. 实现如图复数运算功能,单击“计算”按钮,将复数1和复数2的运算(什么运算由选择的运算符确定)结果显示在结果文本框中。
    要求:
    (1)复数的运算通过编写一个复数(Complex)类及它的加(Add),减(Minus)和乘(Multiply)方法完成,复数的显示通过复数类的Display()方法完成
    (2)通过重载构造方法实现从一个字符串复数来构造一个Complex对象,即可以这样构造一个算数:Complex c = new Complex(“3+4i”); c即为实部为3虚部为4的算数。
提示:此题主要是要大家了解界面与业务逻辑分离的原则,复数的运算由复数类完成,界面只是获得用户输入的数据,并将运算结果显示给用户。

img

求解答,主要卡在复数方法那一步

using System.Text.RegularExpressions;

namespace LeetCode
{
    public class Complex
    {
        public Complex()
        { }

        public Complex(string complex)
        {
            string real, imag;
            Regex reg = new Regex(@"^([0-9]{1,})\+([0-9]{1,})i$");
            Match mc = reg.Match(complex);
            real = mc.Groups[1].Value;
            imag = mc.Groups[2].Value;

            Real = Convert.ToDouble(real);
            Imag = Convert.ToDouble(imag);
        }


        ///实部
        public double Real { get; set; } = 0;
        ///虚部
        public double Imag { get; set; } = 0;
        //加法
        public static Complex operator +(Complex a, Complex b)
        {
            return new Complex { Real = a.Real + b.Real, Imag = a.Imag + b.Imag };
        }
        //减法
        public static Complex operator -(Complex a, Complex b)
        {
            return new Complex { Real = a.Real - b.Real, Imag = a.Imag - b.Imag };
        }
        //乘法
        public static Complex operator *(Complex a, Complex b)
        {
            return new Complex
            {
                Real = a.Real * b.Real - a.Imag * b.Imag,
                Imag = a.Imag * b.Real + a.Real * b.Imag
            };
        }
        public override string ToString()
        {
            if (Imag > 0)
            {
                return Real + "+" + Imag + "i";
            }
            if (Imag == 0)
            {
                return Real.ToString();
            }
            if (Imag < 0)
            {
                return Real.ToString() + Imag.ToString() + "i";
            }
            return null;
        }
    }
}