struct Complex { public Complex(float real, float imaginary) { mRealValue = real; mImaginaryValue = imaginary; } public float Real { get { return mRealValue; } set { mRealValue = value; } } public float Imaginary { get { return mImaginaryValue; } set { mImaginaryValue = value; } } public override string ToString() { return mRealValue.ToString() + " + " + mImaginaryValue.ToString() + "i"; } public static Complex operator +(Complex c1, Complex c2) { return new Complex(c1.Real + c2.Real, c1.Imaginary + c2.Imaginary); } public static Complex operator *(Complex c1, Complex c2) { return new Complex(c1.Real * c2.Real - c1.Imaginary * c2.Imaginary, c1.Real * c2.Imaginary + c1.Imaginary * c2.Real); } private float mRealValue; private float mImaginaryValue; }