Search code examples
c#stack-overflow

Why do I get a StackOverflowException with my property?


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);
    }
} 

Solution

  • 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.