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();
    }
}

C# 进程由于 StackOverflowException 而终止

Empleado 类中的所有属性都会导致这种情况:

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

这将在您设置并获取值时调用自身。也许你的意思是:

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