Please explain to me why this code produces a StackOverflowException
.
There is a mistake in one of the lines as I have shown using comment. I do not however understand why this gives me a StackOverflowException
.
class TimePeriod
{
private double seconds;
public double hour
{
get { return hour / 3600; } // should be : get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}
class Program
{
static void Main()
{
TimePeriod t = new TimePeriod();
t.hour = 5;
System.Console.WriteLine("Time in hours: " + t.hour);
}
}
This produces a stack-overflow, because there is a recursive call on the hour
, when you try to get it.
Here t.hour
, you try to get the value of hour
. This we call the getter, which returns hour / 3600
. This will call again the hour
and so on and so forth, until the stack will overflow.