对于Windows窗体,我需要将arraylists的最后一个索引中保存的十进制数加到十进制小计中。我的processOrder MenuItem给出错误:
subList1在当前上下文中不存在。
但是当使用.Add时,子列表在我的AddtoCart MenuItem方法中是可以的。如果我进入
在AddtoCart()中subtotal = (subList1.RemoveAt(3) + subList2.RemoveAt(3));
作为测试,错误是:
不能将+运算符与void和void类型的操作数一起使用。
我不想使用另一个类和getter。如果删除了值并不重要,我只需要获取值并添加它们以使我的解决方案起作用。
答案 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。
感谢您提供的反馈意见提示。