totalFeeフィールドを省略して、以下のソースコードをコンパイルして実行しました。totalFeeをこのプログラムに書き込んで、各ジョブの合計料金(レート*時間)を正確に計算するにはどうすればよいですか?以下に、私がメソッドを使用してみたことがわかります。エラーCS0051を生成しました(一貫性のないアクセシビリティ:パラメータタイプ'Job'はメソッド'AddJobs.TotalPay(Job)'よりもアクセスしにくいです)。
このソースコードは、次の割り当てに対応しています。
「ハロルズホームサービスのジョブクラスを設計します。このクラスには、ジョブの説明(たとえば、「ウィンドウを洗う」)、ジョブを完了するまでの時間(たとえば、3.5)、1時間あたりの料金の4つのデータフィールドが含まれます。ジョブ(たとえば、$ 25.00)、およびジョブの合計料金(時給×時間)。合計料金を除く各フィールドを取得および設定するためのプロパティを含めます。このフィールドは読み取り専用であり、その値は毎回計算されます。時間料金または時間数が設定されます。+演算子をオーバーロードして、2つのジョブを追加できるようにします。2つのジョブの合計は、両方の元のジョブの説明(「and」で結合)、元のジョブの時間の合計、および元のジョブの時間単価の平均を含む新しいジョブです。すべてのメソッドが正しく機能することを示すMain()関数を記述します。ファイルをDemoJobs.csとして保存します。」
Microsoft®VisualC#®2008、オブジェクト指向プログラミング入門、3e、Joyce Farrell
ソースコードは次のとおりです。
using System;
public class AddJobs
{
private double totalFee;
public AddJobs(double totalFee)
{
TotalFee = totalFee;
}
public static void Main()
{
Job job1 = new Job("washing windows", 5.00, 25.00);
Job job2 = new Job("walking a dog", 3.00, 11.00);
Job job3;
job3 = job1 + job2;
Console.WriteLine("The first job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job1.Description, job1.Time, job1.Rate.ToString("C"));
TotalPay(job1);
Console.WriteLine("The second job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job2.Description, job2.Time, job2.Rate.ToString("C"));
TotalPay(job2);
Console.WriteLine("The third job's description: {0} \nTotal time needed to complete the job: {1} hours \nHourly fee: {2} per hour", job3.Description, job3.Time, job3.Rate.ToString("C"));
TotalPay(job3);
}
public static void TotalPay(Job method)
{
double totalFee = Job.rate * Job.time;
Console.WriteLine("The total fee is: {0}", TotalFee.ToString("C"));
}
}
class Job
{
public Job(string description, double time, double rate)
{
Description = description;
Time = time;
Rate = rate;
}
public static Job operator+(Job first, Job second)
{
string newDescription = first.Description + " and " + second.Description;
double newTime = first.Time + second.Time;
double newRate = (first.Rate + second.Rate) / 2;
double newTotalFee = newRate * newTime;
return(new Job(newDescription, newTime, newRate));
}
public string Description {get; set;}
public double Time {get; set;}
public double Rate {get; set;}
}