Пишу класс рациональных чисел. При неявном преобразовании возникает ошибка (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);
}
}
В сеттере свойства Denominator вы присваиваетe value этому же свойству. Это вызывает бесконечную рекурсию и StackOverflowException. Вам следует завести закрытое (private) поле denominator
и присаивать value ему
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Код вырван из контекста, но я думаю не имеет смысла копировать сюда всю программуЕсть код PHP, который обрабатывает данные, введенные в форму: