繁体   English   中英

C#进程由于StackOverflowException而终止

[英]C# process terminated due to 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();
    }
}

您在Empleado类中的所有属性都导致此:

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

设置并获取值时,它会自行调用。 也许你的意思是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM