2012-02-18 3 views
0

왜 그럴지 잘 모르겠습니다 만, 중단 점을 넣고 내 코드를 밟으면 각 속성이 null 또는 0을 반환합니다. 그들이 내가 수업 시간에 화가 났던 곳의 핵심 가치에 있어야합니다.내 코드에는 오류가 없지만 표시되어야하는 출력이 표시되지 않습니다.

이 내 주요

namespace DemoJobs 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string desc; 
      decimal rate, time, total; 

      Job job1 = new Job("Pour Driveway", 8m, 50.00m); 
      Job job2 = new Job("Instal New Windows", 18m, 120m); 
      Job job3 = job1 + job2; 

      Console.WriteLine("The {0} job will take {1} hours, costing {2} per hour with a total of {3}", 
       job1.Description, job1.Time, job1.Rate.ToString("C"), job1.Total.ToString("C")); 

      Console.WriteLine("The {0} job will take {1} hours, costing {2} per hour with a total of {3}", 
       job2.Description, job2.Time, job2.Rate.ToString("C"), job2.Total.ToString("C")); 

      Console.WriteLine("The {0} job will take {1} hours, costing {2} per hour with a total of {3}", 
       job3.Description, job3.Time, job3.Rate.ToString("C"), job3.Total.ToString("C")); 

      Console.ReadLine(); 
     } 
    } 
} 

이 내 클래스입니다

namespace DemoJobs 
{ 
    public class Job 
    { 
     // variables 
     private string _description; 
     private decimal _time, _rate, _total; 

     // property for the job description 
     public string Description 
     { 
      get { return _description; } 
      set { _description = value; } 
     } 

     // property for the total job time 
     public decimal Time 
     { 
      get { return _time; } 
      set { _time = value; CalcTotal(); } 
     } 

     // property for the jobs hourly rate 
     public decimal Rate 
     { 
      get { return _rate; } 
      set { _rate = value; CalcTotal(); } 
     } 

     // read-only property for the job total 
     public decimal Total 
     { 
      get { return _total; } 
     } 

     // method to calculate the total for the job 
     public decimal CalcTotal() 
     { 
      _total = _rate * _time; 
      return _total; 
     } 

     // constructor 
     public Job(string description, decimal time, decimal rate) 
     { 
      Description = _description; 

      Time = _time; 

      Rate = _rate; 
     } 

     public static Job operator +(Job job1, Job job2) 
     { 
      string newDescription = job1.Description + " and " + job2.Description; 

      decimal newTime = job1.Time + job2.Time; 

      decimal newRate = (job1.Rate + job2.Rate)/2; 

      decimal newTotalFee = newRate * newTime; 

      return (new Job(newDescription, newTime, newRate)); 
     } 
    } 
} 
+1

흠 없음? 시간과 요율이 다른 두 개의 직업이있는 경우 결합 된 직업의 비율은 두 직업의 평균의 비율이 아닙니다. –

+0

문제의 두 부분으로 나누어지며, 두 번째 부분은 작업에 대한 가중 평균을 만들어 총 수수료를보다 정확하게 계산하는 것입니다. –

답변

1

를 사용하여 클래스를 단순화 할 수있다 _description ... _description은 개인 회원입니다.

5

단순히 (예)를 변경

Description = _description; 

Time = _time; 

Rate = _rate; 

Description = description; 

Time = time; 

Rate = rate; 
입니다

현재 코드에서 실제 ctor 매개 변수 대신 인스턴스 필드를 사용합니다. 이 부분에주의를 기울이면 고객의 과부하를 수정하면됩니다.

0

CTOR을 살펴보십시오. 잘못된 값을 지정하고 있습니다. 대신 : 공용 작업 (문자열 설명, 십진수 시간, 십진수 율) { Description = _description;

 Time = _time; 

     Rate = _rate; 
    } 
를 작성해야

: 공공 직업 (문자열 설명, 소수 시간, 소수점 속도) { 설명 = 설명; 당신은 매개 변수로 description를 사용하고 있지만 _description 지정 .... 그 하나가 제공되지 않고 있으므로 Descriptionnull는 또한, null입니다 :

 Time = time; 

     Rate = rate; 
    } 
0

귀하의 Job 생성자는 버그가 있습니다.

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

     Time = time; 

     Rate = rate; 
    } 
+0

각 생성자의 각 부분이 바뀌었고 프로그램에서 예상되는 내용을 표시합니다. 이제 서식을 조정해야하며 모든 설정이 완료됩니다. 도와 주셔서 감사합니다. –

0
public Job(string description, decimal time, decimal rate) 
{ 
     Description = _description; 

     Time = _time; 

     Rate = _rate; 
} 

당신은 설명을 전달하지 않는 :

또한 당신은 조금 당신이 잘못 변수 참조를 사용하는 자동 등록 당신의 생성자에서

public String Description {get; set;} 
0

는 생성자가 거꾸로 어쩌면 같이 ... 보이는

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

     Time = _time; 

     Rate = _rate; 
    } 

공공 직업 (문자열 설명, 소수 시간, 소수점 속도)해야 { _description = 설명;

 _time = time; 

     _rate = rate; 
    } 
관련 문제