Mon code source (ci-dessous) génère l'erreur CS0563 car les deux paramètres de mon opérateur CombinedJobs + (voir "// Étape 5: ... "dans le code source) sont listés comme Job (par opposition à int, double, etc). Comment puis-je changer ce code pour éliminer cette erreur? Ce code est en réponse à l'assignation ci-dessous.Erreur CS0563 (Un des paramètres d'un opérateur binaire doit être le type conteneur)
Attribution:
« . Concevez une classe d'emploi pour les services d'accueil Harold La classe contient quatre champs d'emploi données description (par exemple, « laver les fenêtres »), temps en heures pour terminer le travail (pour exemple, 3.5), le taux par heure facturé pour le poste (par exemple, 25,00 $) et le total des honoraires pour le poste (taux horaire multiplié par les heures) Inclure les propriétés pour obtenir et définir chaque champ sauf le total des frais de ce champ sera en lecture seule et sa valeur est calculée à chaque fois que est réglé ou que le nombre d'heures est réglé. um de deux Jobs est un nouveau Job contenant les descriptions des Jobs d'origine (joints par "et"), la somme du temps en heures pour les Jobs d'origine, et la moyenne du taux horaire pour les Jobs d'origine. Ecrivez une fonction Main() qui montre que toutes les méthodes fonctionnent correctement. Enregistrez le fichier sous DemoJobs.cs «
De:. Microsoft® Visual C# ® 2008, Introduction à la programmation orientée objet, 3e, Joyce Farrell
Code Source:
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();
}
}
Le setter de JobTotalFee est ** EVIL **. Et votre code serait beaucoup plus court si vous utilisiez les propriétés automatiques. J'utiliserais 'public double JobTotalFee {get {return this.JobRate * this.JobTotalTime;}};' sans champ de sauvegarde du tout. Mais votre affectation nécessite que vous définissiez le champ de sauvegarde dans les setters de JobRate et JobTotalTime. Aucune idée pourquoi. – CodesInChaos