2012-04-04 103 views
7

为什么这么做?这是我的代码:发生类型'System.StackOverflowException'的未处理异常

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; } 
+1

可能重复http://stackoverflow.com/questions/1437791/overloading-getter-and-setter-causes -tackoverflow-in-c-sharp)或http://stackoverflow.com/questions/5676430/stackoverflowexception-was-unhandled – user7116 2012-04-04 20:01:22

+7

Titolo getter使用Titolo属性。谁的吸气剂使用Titolo属性。谁的吸气剂使用Titolo属性。谁的吸气剂使用Titolo属性。谁的吸气剂使用Titolo属性。谁的吸气剂使用Titolo属性。谁吸气使用Titolo财产... Kaboom。 – 2012-04-04 20:02:05

回答

36

您这里有一个无限循环:

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

您提到的那一刻在你的代码中,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; } 
} 
2

更改为

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

    public string Titolo 
    { 
     get; 
     set; 
    } 
} 
3

你有一个自我指涉的制定者。你可能意味着使用自动属性:

public string Titolo 
{ 
    get; 
    set; 
} 
[超载getter和setter StackOverflow的原因在C#(的
相关问题