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

时间:2012-04-04 19:57:52

标签: c# .net stack-overflow getter-setter

为什么这样?这是我的代码:

public class KPage
{
    public KPage()
    {
       this.Titolo = "example";
    }

    public string Titolo
    {
        get { return Titolo; }
        set { Titolo = value; }
    }
}

我通过构造函数设置数据。所以,我想做像

这样的事情
KPage page = new KPage();
Response.Write(page.Titolo);

但我收到了错误:

set { Titolo = value; }

3 个答案:

答案 0 :(得分:37)

这里有一个无限循环:

public string Titolo
{
    get { return Titolo; }
    set { Titolo = value; }
}

当你在代码中引用Titolo时,getter或setter调用调用getter的getter,调用getter调用调用getter的getter ... Bam - StackOverflowException

使用支持字段或使用auto implemented properties

public string Titolo
{
    get;
    set;
}

或者:

private string titolo;
public string Titolo
{
    get { return titolo; }
    set { titolo = value; }
}

答案 1 :(得分:3)

你有一个自我指涉的二传手。您可能打算使用自动属性:

public string Titolo
{
    get;
    set;
}

答案 2 :(得分:2)

更改为

public class KPage
{
    public KPage()
    {
       this.Titolo = "example";
    }

    public string Titolo
    {
        get;
        set;
    }
}