2012-04-04 4 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

возможно дубликат [перегружать Getter и Setter Причины StackOverflow в C#] (http://stackoverflow.com/questions/1437791/overloading-getter-and-setter-causes -stackoverflow-in-c-sharp) или http://stackoverflow.com/questions/5676430/stackoverflowexception-was-unhandled – user7116

+7

Titolo getter использует свойство Titolo. Чей геттер использует свойство Титоло. Чей геттер использует свойство Титоло. Чей геттер использует свойство Титоло. Чей геттер использует свойство Титоло. Чей геттер использует свойство Титоло. Чей геттер использует свойство Титоло ... Kaboom. –

ответ

36

У вас есть бесконечный цикл здесь:

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

В данный момент вы ссылаетесь на Titolo в вашем коде, геттер или сеттер вызывают приемник, который вызывает геттер, который вызывает геттер, который вызывает геттер, который вызывает геттер ... 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; 
} 
Смежные вопросы