Мой исходный код (ниже) генерирует ошибку CS0563, поскольку оба параметра в моем операторе CombinedJobs + (см. «//Шаг 5: …» в исходном коде) указаны как Job (в отличие от int, double и т. д.). Как я могу изменить этот код, чтобы устранить эту ошибку? Этот код является ответом на задание, указанное ниже.
Назначение:
«Разработайте класс «Работа» для Домашней службы Гарольда. Класс содержит четыре поля данных: описание работы (например, «мыть окна»), время в часах для выполнения работы (например, 3,5), почасовая ставка, взимаемая за выполнение работы. Задание (например, 25 долл. США) и общая стоимость задания (почасовая ставка, умноженная на количество часов). Включите свойства для получения и установки каждого поля, кроме общего вознаграждения — это поле будет доступно только для чтения, и его значение вычисляется каждый раз либо устанавливается почасовая оплата или количество часов. Перегружайте оператор +, чтобы можно было добавить два задания. Сумма двух заданий — это новое задание, содержащее описания обоих исходных заданий (соединенных «и»), сумма время в часах для исходных заданий и среднее значение почасовой ставки для исходных заданий. Напишите функцию Main(), которая демонстрирует правильную работу всех методов. Сохраните файл как DemoJobs.cs».
Из: Microsoft® 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();
}
}
public double JobTotalFee { get {return this.JobRate * this.JobTotalTime;}};
вообще без поля поддержки. Но ваше назначение требует, чтобы вы установили резервное поле в установщиках JobRate и JobTotalTime. Не знаю, почему. - person CodesInChaos   schedule 30.10.2010