为什么这个简单的代码会导致堆栈溢出异常?

Sam*_*iew -1 .net c# recursion

在此属性的setter方法中抛出了堆栈溢出异常:

public string TimeZone
{
    get
    {
        if (TimeZone == null)
            return "";

        return TimeZone;
    }
    set { TimeZone = value; }
}
Run Code Online (Sandbox Code Playgroud)

"发生了'System.StackOverflowException'类型的未处理异常"

我在这里看不到任何简单的递归.

如果代码存在问题,我应该使用什么来纠正它?

jga*_*fin 11

set { TimeZone = value; }
Run Code Online (Sandbox Code Playgroud)

setter是递归的.

您必须使用以下字段:

string _timeZone;

public string TimeZone
{
    get
    {
        if (_timeZone== null)
            return "";

        return _timeZone;
    }
    set { _timeZone= value; }
}
Run Code Online (Sandbox Code Playgroud)

  • `get`也是递归的. (2认同)