C#操作数错误

本文关键字:错误 操作数 | 更新日期: 2023-09-27 18:28:04

我正在尝试计算C#程序中列表的总数,我得到了班上几个人的帮助,但我们似乎找不到问题,我的代码是

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

错误是此错误1运算符"+"不能应用于类型为"int"answers"ConsoleApplication1.Program.CreditCard"的操作数

任何帮助都将不胜感激,因为我不知道,试图帮助我解决这个问题的人也不知道。

C#操作数错误

我猜你有一个类似于的类

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 += yx = x + y相同。)

就获取列表的总和而言。它就像(假设卡片是一个列表)一样简单
 Cards.Sum(x=>x.YourPropertyToSum);

您的错误:

错误是此错误1运算符"+"不能应用于类型为"int"answers"ConsoleApplication1.Program.CreditCard"的操作数

您正试图用ConsoleApplication1.Program.CreditCard添加一个int(这是什么),它显然不是一个可以添加到int的类型。因此出现了错误。