【问题标题】:C# operands error [closed]C#操作数错误[关闭]
【发布时间】:2013-08-17 13:13:07
【问题描述】:

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

        int totalB = 0;

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

错误是此错误 1 ​​运算符“+”不能应用于“int”和“ConsoleApplication1.Program.CreditCard”类型的操作数

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

【问题讨论】:

  • 你的名单在哪里?什么是信用卡?我的猜测是Cards.Sum(x => x.Balance);
  • 尝试在你的班级中或从你的班级中为你想要总结的成员使用 getter 想想看,你不会总结信用卡但你可能想总结余额,所以你应该在您的班级中有一个原始类型的成员,例如 CreditCar.Balance。使用该成员进行总结
  • 您是否覆盖了信用卡上的“+”运算符?如果不是,那么你怎么能期望在一个类中添加一个 int 呢?

标签: c# operand


【解决方案1】:

我猜你有这样的课程:

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相同。)

【讨论】:

  • +1 用于指出如何直接更改 OP 的代码,但可能值得注意的是 linq foreach 是邪恶的(据说)
  • 现在我的信用卡课程是这样的,public class CreditCard { public string ID;公共字符串名称;公共字符串城市;公开双限;公共双平衡;因为它需要像这样定义,以表明我对我们目前正在处理的 C# 编程级别有所了解
  • 刚刚试了一下,效果很好,为帮助伙伴干杯。
【解决方案2】:

就获取列表的总和而言。它就像(假设 Cards 是一个列表)一样简单

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

您的错误:

错误是此错误 1 ​​运算符“+”不能应用于“int”和“ConsoleApplication1.Program.CreditCard”类型的操作数

您正在尝试使用 ConsoleApplication1.Program.CreditCard(这是什么)添加一个 int,这显然不是可以添加到 int 的类型。因此你得到的错误。

【讨论】:

  • @downvoter,如果你不介意我可以知道原因
  • 可能是因为您的答案几乎是在写 3 cmets 所说的内容
  • 有没有更好的做事方式?我想知道
猜你喜欢
  • 2022-01-02
  • 1970-01-01
  • 2014-05-07
  • 2022-06-29
  • 2018-05-15
  • 2012-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多