很抱歉,这可能是一个非常愚蠢的问题,但是我只是在课堂上学习C#,而在分配作业时遇到了麻烦。我的HourlyEmployee类中有这两种方法,它们不返回任何信息。而且我没有错误消息,因此在尝试弄清楚自己在做什么错时遇到了麻烦。
Program.cs文件
var jumpscare;
var backgroundMusic;
music();
function music() {
jumpscare = new sound("jumpscare.mp3");
backgroundMusic = new sound("bgmusic.mp3");
backgroundMusic.play();
}
HourlyEmployee.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
namespace Assignment5
{
abstract class Employee
{
private string firstName = "";
private string lastName = "";
private int EmployeeID;
public Employee(string firstname, string lastname, int employeeid)
{
firstName = firstname;
lastName = lastname;
EmployeeID = employeeid;
}
public abstract float CalculatePay();
}
public class Program
{
public static void Main(string[] args)
{
List<Employee> employees = new List<Employee>();
employees.Add(new HourlyEmployee("Joe", "Smith", 1234, 12.50f, 40));
employees.Add(new CommissionEmployee("Alice", "Mason", 4321, 20, 1000));
employees.Add(new HourlyEmployee("Richard", "Lionheart", 1212, 11.75f, 43));
employees.Add(new CommissionEmployee("Mark", "Wells", 9876, 21, 4300));
foreach(Employee e in employees)
{
e.CalculatePay();
e.ToString();
}
}
}
}
我的CalculatePay()和ToString()方法肯定被破坏了,我不确定在那里做错了什么。
答案 0 :(得分:4)
您的源代码可能还可以。我认为您想显示由ToString()
方法产生的消息,因此您需要告诉程序这样做。我的意思是,方法ToString
返回一个string
,但您对此却无能为力。为此使用Console.WriteLine()
函数。
示例:
foreach(Employee e in employees)
{
e.CalculatePay();
Console.WriteLine(e.ToString());
}
答案 1 :(得分:0)
我很确定您没有为hourlyRate
和hoursWorked
分配任何东西
您应该从构造函数中的构造函数参数中分配它们。
编辑:也正如DontVoteMeDown一样-您实际上并没有在Main
内输出任何内容。
答案 2 :(得分:0)
hourlyRate
和hoursWorked
未在您的代码中初始化,默认值为0
。
您可以从HourlyEmployee
类的构造函数中初始化这些值,如下所示:-
public HourlyEmployee(string firstname, string lastname, int employeeid,
float hourlyRate, int hoursWorked) : base(firstname, lastname, employeeid)
{
this.hourlyRate = hourlyRate;
this.hoursWorked = hoursWorked;
}
此外,您可能将以下字段设为私有。
public float hourlyRate;
public int hoursWorked;