我的源代码(下面)生成了错误CS0563,因为我的CombinedJobs运算符+中的两个参数(参见源代码中的“//步骤5:...”)被列为Job(而不是int,double,等等)。如何更改此代码以消除此错误?此代码是对下面列出的分配的回应。
分配:
“为Harold的家庭服务设计一个Job类。该类包含四个数据字段-Job 描述(例如,“洗涤窗口”),完成工作的时间(以小时为单位) 例如,3.5),为工作收取的每小时费率(例如,25.00美元)和总费用 工作(每小时费率小时)。包括要获取和设置每个字段的属性 总费用 - 该字段将是只读的,并且每次都计算其值 设定每小时费用或小时数。重载+运算符使两个Jobs 可以添加。两个Jobs的总和是一个包含两者描述的新Job 原始工作(由“和”加入),原始工作的时间总和,以及 原作业的小时费率的平均值。写一个Main()函数 演示所有方法都正常工作。将文件另存为DemoJobs.cs。“
来自:Microsoft®VisualC#®2008,面向对象编程简介,3e,Joyce Farrell
源代码:
using System;
//Step 1: Creating the Job class and designating its fields
public class Job
{
private string jobDescription;
private int jobTotalTime;
private double jobRate;
private double jobTotalFee;
//Step 2: Using the 'this' object will allow me to designate values for
//"this" instantiation of an object later in the program
public string JobDescription
{
get
{
return this.jobDescription;
}
set
{
this.jobDescription = value;
}
}
public int JobTotalTime
{
get
{
return this.jobTotalTime;
}
set
{
this.jobTotalTime = value;
}
}
public double JobRate
{
get
{
return this.jobRate;
}
set
{
this.jobRate = value;
}
}
public double JobTotalFee
{
get
{
return this.jobTotalFee;
}
set
{
this.jobTotalFee = this.JobRate * this.JobTotalTime;
}
}
//Step 3: Creating a method will allow me to display the different jobs
//with their descriptions and other variable fields later in the program
public void JobMessage()
{
Console.WriteLine("Job description: {0} /nTotal time needed to complete the job: {1} hours /nHourly fee: ${2} /nTotal fee for the job is: ${3}", this.JobDescription, this.JobTotalTime, this.JobRate, this.JobTotalFee);
}
}
//Step 4: Creating two instantiations of the Job Class
public class CreateTwoJobs
{
public static void Main()
{
Job jobA = new Job();
Job jobB = new Job();
jobA.JobDescription = "washing windows";
jobA.JobTotalTime = 5;
jobA.JobRate = 25.00;
jobB.JobDescription = "walking dogs";
jobB.JobTotalTime = 10;
jobB.JobRate = 11.00;
jobA.JobMessage();
jobB.JobMessage();
}
}
//Step 5: Creating a third instantiation of the Job Class that is a combination
//of the first two instantiations using the overloaded + operator
public class CombinedJobs
{
public CombinedJobs(string jobDescription, int jobTotalTime, double jobRate, double jobTotalFee)
{
JobDescription = jobDescription;
JobTotalTime = jobTotalTime;
JobRate = jobRate;
JobTotalFee = jobTotalFee;
}
public static CombinedJobs operator+(Job jobA, Job jobB)
{
string newDescription = jobA.JobDescription + " and " + jobB.JobDescription;
int newTotalTime = jobA.JobTotalTime + jobB.JobTotalTime;
double newJobRate = (jobA.JobRate + jobB.JobRate) / 2;
double newTotalFee = newJobRate * newTotalTime
}
public void CombinedJobMessage()
{
Console.WriteLine("Job description: {0} /nTotal time needed to complete the job: {1} hours /nHourly fee: ${2} /nTotal fee for the job is: ${3}", newDescription, newTotalTime, newJobRate, newTotalTime);
}
public static void Main()
{
CombinedJobMessage();
}
}
答案 0 :(得分:3)
operator+
方法必须位于其中一个参数的类中。由于在您的情况下两个参数都是Job
,因此该方法必须位于Job
类中。它不能在CombinedJobs
内。
此外,您将运算符声明为返回CombinedJobs
,这意味着您必须实际返回它。这不会导致您描述的错误,但会导致另一个编译错误。