Ошибка при неявном преобразовании [дубликат]

131
10 октября 2021, 21:30
На этот вопрос уже дан ответ здесь:
StackOverflowException при использовании get/set (1 ответ)
Закрыт 1 год назад.

Пишу класс рациональных чисел. При неявном преобразовании возникает ошибка (StackOverflowException), причину которой понять не получается. Ниже код вызова, класса и скриншот ошибки

Вызов неявного преобразования

    [Test]
    public void ConvertFromInt()
    {
        Rational r = 5;
        AssertEqual(5, 1, r);
    }

Класс Rational

public class Rational
{
    public int Numerator { get; set; }
    public int Denominator
    {
        get { return Denominator; }
        set
        {
            if (value <= 0)
                IsNan = true;
            else
                IsNan = false;
            Denominator = value;
        }
    }
    public bool IsNan { get; set; }
    public Rational(int numenator, int detominator)
    {
        Numerator = numenator;
        Denominator = detominator;
    }
    public Rational(int numenator) : this(numenator,1) { }
    public static implicit operator Rational(int number)
    {
        return new Rational(number);
    }
}

Answer 1

В сеттере свойства Denominator вы присваиваетe value этому же свойству. Это вызывает бесконечную рекурсию и StackOverflowException. Вам следует завести закрытое (private) поле denominator и присаивать value ему

READ ALSO
Почему выдается ошибка?

Почему выдается ошибка?

Код вырван из контекста, но я думаю не имеет смысла копировать сюда всю программуЕсть код PHP, который обрабатывает данные, введенные в форму:

260
XML не принимает URL

XML не принимает URL

не могу в ХМЛ файлу добавить урл не получается вот сам код заранее спасибо

85
Подключение файлов в phpStorm

Подключение файлов в phpStorm

Всем приветСтруктура сайта:

90