在C#中添加多个数组列表中的值

时间:2015-01-23 23:25:27

标签: c# winforms arraylist

对于Windows窗体,我需要将arraylists的最后一个索引中保存的十进制数加到十进制小计中。我的processOrder MenuItem给出错误:

  

subList1在当前上下文中不存在。

但是当使用.Add时,子列表在我的AddtoCart MenuItem方法中是可以的。如果我进入 在AddtoCart()中subtotal = (subList1.RemoveAt(3) + subList2.RemoveAt(3));作为测试,错误是:

  

不能将+运算符与void和void类型的操作数一起使用。

我不想使用另一个类和getter。如果删除了值并不重要,我只需要获取值并添加它们以使我的解决方案起作用。

3 个答案:

答案 0 :(得分:3)

RemoveAt()函数不返回值。它只是移除它并扔掉它。相反,这将起作用:

subtotal = ((decimal)subList1[subList1.Count-1]) + (decimal)subList2.[subList2.Count - 1];

更好的是,如果使用简单的List<decimal>而不是ArrayList,则可以摆脱那种难看的转换。 曾经再次使用ArrayList是没有充分理由的。

subtotal = subList1[subList.Count - 1] + subList2[subList2.Count - 1];

如果您使用的是最新版本的Visual Studio,则可以进一步简化代码:

subtotal = subList1.Last() + subList2.Last();

答案 1 :(得分:0)

你绝对应该多练习一些C#并阅读有关馆藏的内容。您不是在寻找RemoveAt(),因为它只是从集合中移除一个项目(在这种情况下为ArrayList),并且是一个没有返回值的void方法。

您需要的是subtotal = subList1[3] + subList2[3]

答案 2 :(得分:0)

让我重新说明barca_d:我在Windows Forms中工作。我试图添加我的arraylists的最后一个元素的数字。 nXu纠正了我的语法但是小计=((十进制)subList1 [2] + subList2 [2] ....(十进制)subList5 [2]);生成错误&#39;参数超出范围异常&#39;。据我所知,在输入之前,索引值为-1,之后的值必须为0-2。

根据我的发现,List只能使用一种类型。因此,使用arraylist。老师只是走过阵列,但说arraylists更好。我们还没有超过哈希表和其他收藏品。 Arraylists是这样生成的:private ArrayList subList1 = new ArrayList(3);

可以列出&lt;&gt;某种程度上使用多种类型?我的AddtoCart菜单项计数器一定不能正常工作。 解决方案是将arraylist元素初始化为null。

感谢您提供的反馈意见提示。