2013-08-17 57 views
0

我試圖計算總在我的C#程序的列表,我已經在我的課得到幫助,從幾個人,我們似乎無法找到問題,我的代碼,C#操作數錯誤

 int totalB = 0; 

     Cards.ForEach(delegate(ConsoleApplication1.Program.CreditCard Balance) 
     { 
      totalB= totalB + Balance; 
     }); 

的錯誤是這樣的錯誤1操作「+」不能應用於類型「詮釋」的操作數和「ConsoleApplication1.Program.CreditCard」

的任何幫助,這將非常感激,因爲我不知道也不做那些試圖幫助我解決這個問題的人

+0

哪裏是你的名單?什麼是信用卡?我的猜測是'Cards.Sum(x => x.Balance);' – Sayse

+0

試着在你想要總結的成員中爲你的班級使用吸氣劑 想想看,你不會總結信用卡但你可能想要總結餘額,所以你應該在你的班級中有一個成員,例如原始類型的CreditCar.Balance。 使用該成員進行彙總 – Silvano

+2

您是否覆蓋CreditCard上的「+」運算符?如果沒有,那麼你怎麼能期望添加一個int類? –

回答

0

只要求和o f列表。它是那樣簡單(假設卡是一個列表)

Cards.Sum(x=>x.YourPropertyToSum); 

你的錯誤:

The error is this Error 1 Operator '+' cannot be applied to operands of type 'int' and 'ConsoleApplication1.Program.CreditCard'

您嘗試添加與ConsoleApplication1.Program.CreditCard(這是)一個int其中顯然不是可以添加到int的類型。因此你得到的錯誤。

+0

@downvoter,如果你不介意,我可能知道原因 – Ehsan

+0

可能是因爲你的回答幾乎寫了3條評論說的什麼 – Sayse

+0

有沒有更好的做事方式?我想知道 – Ehsan

3

我猜你有一個類,如:

partial class CreditCard 
{ 
    public int Balance {get; set;} 
} 

所以下面你所擁有的,明確的,你最有可能的意圖:

int totalB = 0; 

Cards.ForEach(delegate(ConsoleApplication1.Program.CreditCard card) 
{ 
    totalB = totalB + card.Balance; 
}); 

這種迭代的每個項目在您的收藏Cards ,並將Balance屬性的值添加到totalB。注意我已在代理中調用變量card以進一步說明發生了什麼 - 將爲集合中的每個項目調用一次委託。在裏面,您可以挑選Balance屬性並將其添加到totalB


注意,你也可以做到這一點在許多其他方面:

  1. 使用LINQ:

    int totalB = Cards.Sum(card => card.Balance); 
    
  2. 使用lambda表達式,而不是一個明確的委託:

    int totalB = 0; 
    
    Cards.Foreach(card => {totalB += card.Balance;}); 
    
  3. 使用foreach循環:

    int totalB = 0; 
    
    foreach(CreditCard card in Cards) 
        totalB += card.Balance; 
    

(如果你不熟悉它,該x += y是一樣的x = x + y

+0

+1指出如何直接更改OP的代碼,但它可能值得注意的是,linq foreach是邪惡的(每說) – Sayse

+0

好在此刻我的信用卡類是這樣的, 公用類CreditCard { 公共字符串ID; 公共字符串名稱; 公共字符串城市; 公共雙限制; 公共雙重平衡; ,因爲它需要被定義爲顯示我有一個明白的C#編程水平,我們正在努力 – user2675079

+0

剛剛嘗試過它,它的作品,爲幫助隊友歡呼。 – user2675079