2013-10-26 2 views
0

Я пытаюсь сделать эту программу, и после первого выхода я получаю сообщение, представленное на изображении. Я искал в Интернете и не могу найти способ решить проблему. Некоторые части программы написаны на испанском языке, потому что я изучаю в латинской стране, если вам нужен перевод, пожалуйста, спросите. Любая помощь очень ценитсяC# процесс завершен из-за StackOverflowException

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

Все из ваших свойств в классе Empleado вызывают это:

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' более совместимы и избегают подобных ошибок. –

Смежные вопросы