C# 进程由于 StackOverflowException 而终止
本文关键字:终止 StackOverflowException 进程 | 更新日期: 2023-09-27 18:36:56
我正在尝试制作这个程序,在第一次输出后,我得到了图像上显示的消息。我在网上搜索过,但找不到解决问题的方法。 该计划的某些部分是用西班牙语编写的,因为 y 在拉丁国家学习,如果需要任何翻译,请询问。 任何帮助都非常感谢
https://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();
}
}
Empleado 类中的所有属性都会导致这种情况:
public new string nombre
{
get
{
return nombre;
}
set
{
nombre = value;
}
}
这将在您设置并获取值时调用自身。也许你的意思是:
public new string nombre
{
get
{
return base.nombre;
}
set
{
base.nombre = value;
}
}