我有一个jobArray阵列包含一个晚五组的工作description
,hours needed to complete
和一个hourly pay that a user enters
。
在打印时,我需要按总费用的升序对数组进行排序(hours * hourly pay)
。
作业需要我在使用IComparable interface
时使用,但不确定如何使用。任何帮助,将不胜感激,谢谢
这是我的job
课
class Job : IComparable
{
public Job(string description, int hours, double hourRate, double fee)
{
Description = description;
hoursToComplete = hoursToComplete;
hourlyRate = hourlyRate;
totalFee = totalFee;
}
这是我用来比较totalFees的界面
public int CompareTo(Job o)
{
int returnVal;
Job temp = (Job)o;
if (this.totalFee > temp.totalFee)
returnVal = 1;
else
if (this.totalFee < temp.totalFee)
returnVal = -1;
else
returnVal = 0;
return returnVal;
}
我不确定从jobs
那里打印时如何排序total fees
。
这是您的代码的工作版本:
class Job : IComparable<Job>
{
public string Description { get; set;}
public int HoursToComplete { get; set;}
public double HourlyRate { get; set;}
public double TotalFee { get; set;}
public Job(string description,
int hoursToComplete,
double hourlyRate,
double totalFee)
{
Description = description;
HoursToComplete = hoursToComplete;
HourlyRate = hourlyRate;
TotalFee = totalFee;
}
public int CompareTo(Job otherJob)
{
int returnVal;
if (this.TotalFee > otherJob.TotalFee)
returnVal = 1;
else
if (this.TotalFee < otherJob.TotalFee)
returnVal = -1;
else
returnVal = 0;
return returnVal;
}
}
现在,既然已经实现了IComparable<Job>
,那么在给定的位置List<Job>
,只需调用Sort
,它将自动调用Job
class CompareTo
,而不是对象class。还要注意,我使用了通用版本IComparable<Job>
,而不是IComparable
,以避免不必要的类型转换
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句