OfficialSub0 Ответов: 1

Как мне избавиться от исключения stackoverflowexception


Поле никогда не используется не знаю почему? -- & gt; private int realValue и private int imaginaryValue

Что я уже пробовал:

using System;

class Complex
    { 

    public class ComplexNum
{
    private int realValue;
    private int imaginaryValue;

}

   public Complex(int realPart, int imaginaryPart)
        {
           this.realValue = realPart;
            this.imaginaryValue = imaginaryPart;
        
        }

    public Complex()
    {
        this.realValue = 0;
       this. imaginaryValue = 0;
}

        public int realValue
        {
            get
                { return realValue; }
            set
                { realValue = value; }

        }

        public int imaginaryValue
        {
            get
               { return imaginaryValue; }
            set
                { imaginaryValue = value; }
         }

        public override string ToString()
        {
    return string.Format(" ({0}, {1})", realValue, imaginaryValue);

            }

    public void add(Complex a, Complex b)
{
    this.realValue = a.realValue + b.realValue;
    this.imaginaryValue = a.imaginaryValue + b.imaginaryValue;

}
    public void subtract(Complex a, Complex b)
{
    this.realValue = a.realValue + b.realValue;
    this.imaginaryValue = a.imaginaryValue + b.imaginaryValue;
        Console.WriteLine("Press enter to exit.");
        Console.ReadLine();
}
   
    }

    public class ComplexTest
        {
            
    public static void Main(string[] args)
    {
        Console.WriteLine("Complex Numbers\n");

        Complex a = new Complex(6, 8);
        Complex b = new Complex(10, 18);

        Complex result1 = new Complex();
        Complex result2 = new Complex();

        Console.WriteLine("1st Number:");
        Console.WriteLine(a.ToString());
        Console.WriteLine("2nd Number:");
        Console.WriteLine(b.ToString());

        result1.add(a, b);
        Console.Write("\nTest Addition:\nAfter Adding:");
        Console.WriteLine(result1.ToString());
        Console.ReadLine();


        result2.subtract(a, b);

        Console.Write("\nTest Subtraction:\nAfter Subtracting: ");
        Console.WriteLine(result2.ToString());
        Console.ReadLine();

        Console.WriteLine("Press enter to exit.");
        Console.ReadLine();




    }
}

Patrice T

постарайтесь собраться с мыслями и задать ясный вопрос.
Название - о проблеме, а текст-о чем-то другом.

NotPolitcallyCorrect

Если мы наткнемся на вашу публикацию (это не вопрос и нет описания проблемы) и предположим, что заголовок вашей публикации должен быть фактическим вопросом, то вы получите это, потому что вы устанавливаете свои свойства внутри своего сеттера снова и снова, пока не переполните свой стек. Изучение того, как использовать отладчик для отладки вашего кода, сказало бы вам об этом.

1 Ответов

Рейтинг:
10

Patrice T

add и subtract выглядят невероятно одинаково.
-----
Ваш код ведет себя не так, как вы ожидаете, и вы не понимаете почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Обратная сторона этого решения:
- Это поделка, вы сами отслеживаете проблему и находите ее корни, которые ведут к решению.
Плюсы этого решения:
- Вы видите свое поведение в коде, вы сопоставляете его с вашими ожиданиями.

Вторичное воздействие
- Вы будете гордиться тем, что сами нашли Жуков.
- Ваши навыки улучшатся.

Вы должны довольно быстро найти, что не так.


NotPolitcallyCorrect

Вроде как парировал. Вы отвечаете на следующий вопрос: "почему мой метод сложения работает, а вычитание не работает?".

Patrice T

Спасибо.