2013-10-26 93 views
0

我試圖讓這個程序和第一個輸出後,我得到的消息呈現在圖像上。我在網上搜索,找不到解決問題的方法。該計劃的某些部分是用西班牙語編寫的,因爲如果需要翻譯,請在問一個拉丁文國家學習。任何幫助是非常讚賞由於StackOverflowException異常終止C#進程

在Empleado類的屬性

http://i.stack.imgur.com/F9DTE.png

using System; 

class Persona 
{ 
    protected string nombre; 
    protected string segsoc; 
    public Persona() 
    { 
     nombre = ""; 
     segsoc = ""; 
     Console.WriteLine("Objeto Persona construido."); 
    } 
    ~Persona() 
    { 
     Console.WriteLine("Objeto Persona destruido."); 
    } 
} 

class Empleado : Persona 
{ 
    private double laPagaHora; 
    private double lasHoras; 
    public new string nombre 
    { 
     get 
     { 
      return nombre; 
     } 
     set 
     { 
      nombre = value; 
     } 
    } 
    public new string segsoc 
    { 
     get 
     { 
      return segsoc; 
     } 
     set 
     { 
      segsoc = value; 
     } 
    } 
    public double pagaHora 
    { 
     get 
     { 
      return laPagaHora; 
     } 
     set 
     { 
      laPagaHora = value; 
     } 
    } 
    public double horas 
    { 
     get 
     { 
      return lasHoras; 
     } 
     set 
     { 
      this.lasHoras = value; 
     } 
    } 
    public double paga 
    { 
     get 
     { 
      return laPagaHora * lasHoras; 
     } 
    } 
    public Empleado() 
    { 
     Console.WriteLine("Objeto Empleado construido."); 
    } 
    ~Empleado() 
    { 
     Console.WriteLine("Objeto Empleado destruido."); 
    } 
} 

class Demo 
{ 
    private static void Main() 
    { 
     Empleado empleado = new Empleado(); 
     Console.WriteLine("\nEntre los datos siguientes."); 
     Console.Write("Nombre: "); 
     empleado.nombre = Console.ReadLine(); 
     Console.Write("Seguro social: "); 
     empleado.segsoc = Console.ReadLine(); 
     Console.Write("Paga por hora: "); 
     empleado.pagaHora = double.Parse(Console.ReadLine()); 
     Console.Write("Horas trabajadas: "); 
     empleado.horas = double.Parse(Console.ReadLine()); 
     Console.WriteLine("\n--- Datos del empleado ---"); 
     Console.WriteLine("Nombre: " + empleado.nombre); 
     Console.WriteLine("Seguro social: " + empleado.segsoc); 
     Console.WriteLine("Paga por hora: {0:C}", empleado.pagaHora); 
     Console.WriteLine("Horas trabajadas: " + empleado.horas); 
     Console.WriteLine("Paga: {0:C}", empleado.paga); 
     Console.WriteLine(); 
     Console.Write("Press 'Enter' to finish..."); 
     Console.ReadLine(); 
    } 
} 
+0

[設置屬性時獲取StackOverflowException(http://stackoverflow.com/questions/6372836/getting-stackoverflowexception-when-setting-property) –

回答

4

所有導致此:

public new string nombre 
    { 
     get 
     { 
      return nombre; 
     } 
     set 
     { 
      nombre = value; 
     } 
    } 

這將調用本身,當你設置和獲取的值。也許你的意思是:

public new string nombre 
    { 
     get 
     { 
      return base.nombre; 
     } 
     set 
     { 
      base.nombre = value; 
     } 
    } 
+4

此外,調用的屬性'的可能重複Nombre'和字段'_nombre'更加合規,避免了這些錯誤。 –

相關問題