2012-04-04 23 views
7

Dlaczego to? To jest mój kod:Wystąpił nieobsługiwany wyjątek typu "System.StackOverflowException".

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

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

Ustawiam dane według konstruktora. Tak, chciałbym zrobić latków jak

KPage page = new KPage(); 
Response.Write(page.Titolo); 

ale otrzymuję ten błąd na:

set { Titolo = value; } 
+1

możliwe duplikat [przeciążenia Getter i Setter powoduje StackOverflow w C#] (http://stackoverflow.com/questions/1437791/overloading-getter-and-setter-causes -stackoverflow-in-c-sharp) lub http://stackoverflow.com/questions/5676430/stackoverflowexception- was-unhandled – user7116

+7

Getter Titolo używa własności Titolo. Który getter używa własności Titolo. Który getter używa własności Titolo. Który getter używa własności Titolo. Który getter używa własności Titolo. Który getter używa własności Titolo. Który getter używa własności Titolo ... Kaboom. –

Odpowiedz

36

Masz nieskończoną pętlę tutaj:

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

Moment, w którym odnosisz się do Titolo w twoim kodzie, getter lub seter nazywają getter, który wywołuje getter, który wywołuje getter, który wywołuje getter, który wywołuje gettera ... Bam - StackOverflowException.

Albo użyć pole oporowe lub użyj auto implemented properties:

public string Titolo 
{ 
    get; 
    set; 
} 

czyli

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

Zmiana

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

    public string Titolo 
    { 
     get; 
     set; 
    } 
} 
3

Masz autoreferencyjna setter. Prawdopodobnie oznaczało użycie automatycznych właściwości:

public string Titolo 
{ 
    get; 
    set; 
} 
Powiązane problemy