【发布时间】:2019-04-30 01:38:43
【问题描述】:
我当前的 C# 家庭作业需要使用一个包含 7 个员工记录的预定义数组,每个记录由一组属性组成。这些记录必须使用 foreach 循环从数组中提取所有员工记录,然后使用 ToString 的公共覆盖来显示具有特定列格式的记录。我已经能够毫无问题地实施这个阶段。
然后下一组要求要求我们仅显示服务时间少于一年或介于 1 到 5 年之间的员工记录,这就是我卡住的地方。
我们需要使用这个类来表示当前日期(从作业中复制和粘贴):
public static class GlobalVars
{
public static DateTime reportDate = DateTime.Parse("02/28/2017");
}
我们还需要自己创建一个名为 YearsOfService 的原始方法来计算员工的服务年限,该方法将员工租用日期的年份与 GlobalVars 类中当前日期的年份进行比较,我已经在这里完成:
public int YearsOfService()
{
DateTime current = GlobalVars.reportDate;
int yearsOfService = current.Year - hireDate.Year;
return yearsOfService;
}
我们需要使用这种语法在屏幕上打印记录(从作业中复制和粘贴):
Employee emp = new Employee();
Employee[] employees = Employee.GetEmployeeData();
Console.WriteLine(Employee.EmployeeReportTitle("Employee Report Data Dump"));
Console.WriteLine(Employee.ColumnHeader());
foreach (Employee employee in employees)
{
Console.WriteLine(employee.ToString());
}
这是我的列格式的格式化覆盖字符串输出:
public override string ToString()
{
return String.Format("{0,-10:D5} {1, -20}{2, -16}${3, -11}{4:MM/dd/yyyy} {5, 16:D2}",
empNumber, empName, empStatus, hourlyWage, hireDate, YearsOfService());
}
这可以很好地打印数组中的每条记录,但是如何在 foreach 级别插入需求?我需要实现一个过滤器,以便通过 ToString 打印的唯一记录是 yearsOfService 高于特定值或两个值之间的记录。
我尝试过 if/else 循环和 switch case,但我无法以排除/包含正确记录的方式构建语法。
【问题讨论】:
-
我想在这个级别你已经知道如何写一个
if语句,对吗?好吧,这似乎就是你所需要的。在您的foreach循环中,只需插入一个if条件来检查YearsOfService的值,并根据该条件决定是否将employee.ToString()打印到控制台。
标签: c# foreach enums overriding tostring