2013-11-28 34 views
-2

我有一個給該錯誤的控制檯應用程序:- C#,操作數誤差

運算符「+」不能被應用於類型的操作數「program3_Sales.Books」和「program3_Sales.Books」。錯誤發生在這行代碼上(紅色錯誤行在s1 + s2下)。任何想法,爲什麼我得到這個錯誤?謝謝。

Books total = s1 + s2 + s3; 

這裏是我的代碼:

namespace Book_Sales 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Books s1 = new Books("Cats Meow", 2000, 0.20); 
      Books s2 = new Books("Bender", 4000); 
      Books s3 = new Books("Carter"); 
      Books total = s1 + s2 + s3; 
      Display(s1); 
      Display(s2); 
      Display(s3); 
      DisplayTotal(total); 
     } 
     public static void Display(Books s) 
     { 


      Console.Write("{0} had sales totaling {1}.", s.Name, s.SalesAmount); 
      Console.WriteLine(" Commission rate is {0}; commision value is {1}.", 
       s.getRate(), s.Commission); 
     } 
     public static void DisplayTotal(Books s) 
     { 

      Console.Write("Total sales: {0}", s.SalesAmount.ToString("C")); 
     } 
    } 

    class Books 
    { 
     readonly double RATE; 
     private double salesAmount; 
     private double commission; 
     public string Name { get; set; } 
     public double SalesAmount { get; set; } 
     public double Commission { get; set; } 
     public double rate { get; set; } 

     public Books(string name, double salesAmount, double rate) 
     { 
      Name = name; 
      RATE = rate; 
      SalesAmount = salesAmount; 


     } 

     public Books (string name) 
      : this(name, 0, 0) 
     { 
     } 

     public Books(string name, double salesAmount) 
      : this(name, salesAmount, 0) 
     { 
     } 

     public double getRate() 
     { 
      return commission = salesAmount * rate; 
     } 
     //methods 
    } 
} 
+4

有什麼不明確的錯誤信息給你?你期望得到什麼結果? – zerkms

+0

由於錯誤消息告訴您,您不能將這些對象一起添加。告訴我們你想要得到什麼,我們可以告訴你你錯在哪裏。 – TheEvilPenguin

+1

爲什麼結果是'Books'類型而不是'Superbook'而不是? – zerkms

回答

3

它不應該是這樣的

double total = s1.SalesAmount + s2.SalesAmount + s3.SalesAmount; 

正如其他人所說,你可以重載 '+' 操作符但即使這樣總將需要雙倍,而不是類型

+0

我已經刪除了......書籍......的評論。 ;) –

+1

@Andrew Barber♦:更正:這是一本評論書中的2本書 – zerkms

0

您可以重載運算符+

public static double operator+(Book b1, Book b2) { 
    return b1.SalesAmount + b2.SalesAmount; 
} 

..你可能會更好過將它添加手動,但..因爲它更有意義:

var result = b1.SalesAMount + b2.SalesAmount + b3.SalesAmount; 

...等。