2013-08-17 2 views
0

Я пытаюсь вычислить итог для списка в моей программе C#, я получил помощь от нескольких людей, в моем классе, и мы не можем показаться, чтобы найти проблему, мой код,C# операнды ошибка

 int totalB = 0; 

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

ошибка эта ошибка 1 Оператор «+» не может быть применен к операндам типа «INT» и «ConsoleApplication1.Program.CreditCard»

Любая помощь для этого была бы оценена, как я понятия не имею, и ни люди, которые пытались помочь мне в этом вопросе

+0

где ваш список? что такое кредитная карта? я предполагаю, что это будет 'Cards.Sum (x => x.Balance);' – Sayse

+0

Попробуйте использовать getter или из своего класса для члена, которого вы хотите суммировать Просто подумайте, вы не суммируете кредитные карты но вы можете захотеть суммировать баланс, поэтому у вас должен быть член в вашем классе, например CreditCar.Balance, в сыром типе. Используйте этот элемент для подведения итогов – Silvano

+2

Вы переопределили оператор «+» на кредитной карте? Если нет, то как вы можете ожидать добавления 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'

вы пытаетесь добавить Int с ConsoleApplication1.Program.CreditCard (что это), который очевидно, не является типом, который может быть добавлен в 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; 
}); 

This перебирает каждый элемент в вашей коллекции Cards , и добавляет значение Balance к totalB. Примечание. Я вызывал переменную card в делегате, чтобы еще раз иллюстрировать, что происходит - делегат будет вызываться один раз для каждого элемента в коллекции. Внутри вы можете выбрать Balance и добавить его в totalB.


Примечание вы можете также сделать это в ряде других способов:

  1. Использование LINQ:

    int totalB = Cards.Sum(card => card.Balance); 
    
  2. Использование лямбда-выражения вместо явного делегата:

    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

ну на данный момент мой класс для кредитной карты - это public class CreditCard { public string ID; public string Name; общественная строка Город; общественный двойной лимит; общественный двойной баланс; , так как это нужно определить как показано для показа. У меня есть понимание уровня программирования C#, над которым мы работаем на мамане. – user2675079

+0

Просто попробовал, и он работает для этого, приветствует помощника помощника. – user2675079

Смежные вопросы