C# 类没有响应

本文关键字:响应 | 更新日期: 2023-09-27 17:57:12

我正在制作一个程序,根据员工的工作时间和工资率计算员工的工资。但是,当我尝试使用我在另一个类中创建的方法时:

public void GrossPay(int i)
    {
        double GrossPay = 0.0;
        GrossPay = Hours[i] * PayRate[i];
        Wages[i] = GrossPay;
    }

尝试在我的主程序中使用它:

public static void Payroll()
    {
        int employeeID = 0;
        int hours = 0;
        double payRate = 0.0;
        double wages = 0.0;
        Payroll payroll = new Payroll(employeeID, hours, payRate, wages);
        for (int i = 0; i < payroll.EmployeeID.Length; i++)
        {
            Console.WriteLine("Employee ID: {0}", payroll.EmployeeID[i]);
            Console.WriteLine("How many hours does employee {0} work?", payroll.EmployeeID[i]);
            string h = Console.ReadLine();
            payroll.Hours[i] = Convert.ToInt32(h);
            Console.WriteLine("What is the hourly wage for employee {0}?");
            string w = Console.ReadLine();
            payroll.PayRate[i] = Convert.ToInt32(w);
            Console.WriteLine("Employee ID: {0} 'nGross Pay: {1}", payroll.EmployeeID[i], payroll.Wages[i]);
            Console.ReadLine();
        }
    }

无论如何,总工资回报为 0。请帮忙!

C# 类没有响应

您从未调用过已构建的方法;在从 Wages 属性读取之前,应调用它。

// ...
payroll.PayRate[i] = Convert.ToInt32(w);
payroll.GrossPay(i);
Console.WriteLine("Employee ID: {0} 'nGross Pay: {1}", payroll.EmployeeID[i], payroll.Wages[i]);
// ...

这将解决您的问题,但我建议您尝试面向对象的范式。我建议您创建一个 Employee 类,该类将具有 IdPayRateHours 等属性和一个属性Wages

,如下所示:
public double Wages
{
    get
    {
        return PayRate * Hours;
    }
}

然后,Payroll类可以容纳一系列员工:List<Employee> Employees;