2012-02-18 156 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

Hm no error?如果你有兩份工作時間和費率不同,那麼合併工作的比例不僅僅是兩份工作比率的平均值。 – 2012-02-18 22:34:37

+0

問題有兩個部分,第二部分涉及對工作進行加權平均,以使總費用更準確。 – 2012-02-19 21:30:55

回答

1

在你的構造有點你正在使用錯誤的變量引用簡化你的類_description ... _description是私人會員。

5

只需改變(一個例子)

Description = _description; 

Time = _time; 

Rate = _rate; 

Description = description; 

Time = time; 

Rate = rate; 

在您當前的代碼中,您使用實例字段而不是實際的ctor參數。 修改你的ctor超載,關注這方面並完成。

0

看看你的CTOR。 您正在分配錯誤的值。而不是: public Job(字符串描述,十進制時間,十進制速率) { Description = _description;

 Time = _time; 

     Rate = _rate; 
    } 

你應該寫: 公開招聘(字符串描述,小數時,小數率) { 說明=描述;

 Time = time; 

     Rate = rate; 
    } 
0

Job構造函數有一個bug:您正在使用description作爲參數,但分配_description ....沒有提供這一個,是null,所以你Descriptionnull

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

     Time = time; 

     Rate = rate; 
    } 
+0

我改變了我的構造函數中的每個部分,程序顯示了它的設想,現在我必須調整格式,我將全部設置。謝謝您的幫助。 – 2012-02-18 22:39:18

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; 
    } 
相關問題