2012-04-04 178 views
7

¿Por qué esto? Este es mi código:Se produjo una excepción no controlada del tipo 'System.StackOverflowException'

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

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

Establecí los datos por el constructor. Por lo tanto, me gustaría hacer algunas cosas como

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

pero me sale ese error en:

set { Titolo = value; } 
+1

posible duplicado de [Sobrecarga Getter y Setter Causas Stackoverflow en C#] (http://stackoverflow.com/questions/1437791/overloading-getter-and-setter-causes -stackoverflow-in-c-sharp) o http://stackoverflow.com/questions/5676430/stackoverflowexception-was-unhandled – user7116

+7

El captador Titolo utiliza la propiedad Titolo. Cuyo getter usa la propiedad Titolo. Cuyo getter usa la propiedad Titolo. Cuyo getter usa la propiedad Titolo. Cuyo getter usa la propiedad Titolo. Cuyo getter usa la propiedad Titolo. Cuyo getter usa la propiedad de Titolo ... Kaboom. –

Respuesta

36

Usted tiene un bucle infinito aquí:

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

El momento en que se refiere a Titolo en su código, el getter o setter llama al getter que llama al getter que llama al getter que llama al getter que llama al getter ... Bam - StackOverflowException.

O bien utilizar un campo de respaldo o utilizar auto implemented properties:

public string Titolo 
{ 
    get; 
    set; 
} 

O:

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

Cambiar para

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

    public string Titolo 
    { 
     get; 
     set; 
    } 
} 
3

Tiene un regulador de auto-referencial. Probablemente referimos a utilizar auto-propiedades:

public string Titolo 
{ 
    get; 
    set; 
} 
Cuestiones relacionadas