错误CS0051(不一致的可访问性:参数类型'作业'比方法'AddJobs.TotalPay(作业)'更难访问)

Noo*_*oob 11 c# get set multiplication

我通过省略totalFee字段编译并运行下面的源代码.如何将totalFee写入此程序,以便准确计算每项工作的总费用(费率*时间)?下面,你会看到我尝试使用一种方法; 生成错误CS0051(不一致的可访问性:参数类型'作业'不如方法'AddJobs.TotalPay(作业)'可访问).

此源代码响应以下分配:

"为Harold的家庭服务设计一个Job类.该类包含四个数据字段 - 作业描述(例如,"洗涤窗口"),完成作业的时间(例如,3.5),每小时收取的费用作业(例如,$ 25.00),以及作业的总费用(每小时费率小时数).包括获取和设置每个字段的属性,但总费用除外 - 该字段将是只读的,并且每次计算其值设定每小时费用或小时数.重载+运算符,以便可以添加两个作业.两个作业的总和是一个新作业,其中包含原始作业(由"和"加入)的描述,原始作业的小时数总和,以及原始作业的小时费率的平均值.编写一个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;}
}
Run Code Online (Sandbox Code Playgroud)

ang*_*son 31

您尚未为类指定可见性修饰符,这使其成为内部.

尝试更改此行:

class Job
Run Code Online (Sandbox Code Playgroud)

对此:

public class Job
Run Code Online (Sandbox Code Playgroud)


VJa*_*ain 5

这表示您正在访问不公开的课程。

public class Job
{

  public Job(string description, double time, double rate)
  {
     Description = description;

     Time = time;

     Rate = rate;
  }
Run Code Online (Sandbox Code Playgroud)