2010-10-30 18 views
0

我的源代碼(下面)正在產生錯誤CS0563,因爲這兩個參數在我CombinedJobs操作者+(見「//步驟5:... 「在源代碼中)被列爲作業(而不是int,double等)。我如何更改此代碼以消除此錯誤?此代碼是爲了響應下面列出的任務。錯誤CS0563(一個二進制運算符的參數必須是包含類型)

分配:

「。設計一個招聘類哈羅德的家庭服務類包含四個數據字段,工作 描述(例如,‘洗窗’),時間以小時來完成作業( 例如,3.5),每小時的速度收取作業(例如,$ 25.00),總費用 作業(時薪次小時)。包括屬性來獲取和設置每個字段除了 總費用 - 即場將只讀,並且其值在每個時間要麼 每小時費用或小時被設定數來計算。過載+運算,使得兩個工作 可以加入。在S兩份工作的UM是含有 原職位的描述(用「和」加盟),時間以小時爲原始作業的總和, 平均原始作業時薪的新工作。寫一個Main()函數, 演示所有方法都能正常工作。將文件另存爲DemoJobs.cs「

來自:微軟的Visual C#®2008年,介紹了面向對象程序設計,3E,喬伊斯·法雷爾

源代碼:

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(); 

    } 

}  
+1

JobTotalFee的二傳手是** ** EVIL。如果你使用自動屬性,你的代碼將會縮短很多。我會使用'public double JobTotalFee {get {return this.JobRate * this.JobTotalTime;}};'根本沒有後臺字段。但是你的任務要求你在JobRate和JobTotalTime的setter中設置後臺字段。不知道爲什麼。 – CodesInChaos 2010-10-30 14:01:34

回答

2

operator+方法必須在其參數之一的類中,因爲在您的情況下,兩個參數都是Job,該方法必須位於Job類中,不能在CombinedJobs之內。另外,您聲明運營商返回CombinedJobs,這意味着您必須實際返回它。這不會導致您正在描述的錯誤,但會導致另一個編譯錯誤。

+0

謝謝,這非常有幫助。我現在幾乎已經按照正常的順序進行了這個程序。只剩一件事... – Nooob 2010-10-30 20:41:48

相關問題