使用for循环而不是if语句累积列表框中的值

时间:2014-03-17 19:59:17

标签: c# asp.net for-loop visual-web-developer-2010 listboxitems

我已经学会了如何使用if语句累积总数,现在我正在尝试缩短我的代码。 我的一个朋友告诉我你可以使用FOR循环来做这个,所以我尝试了但是我无法完全理解FOR循环。

我的IF代码就是这个......

if (lbSnacks.Items[0].Selected)
{
    decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[0].Value);
}
if (lbSnacks.Items[1].Selected)
{
   decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[1].Value);
}
if (lbSnacks.Items[2].Selected)
{
    decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[2].Value);
}
if (lbSnacks.Items[3].Selected)
{
     decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[3].Value);
}
if (lbSnacks.Items[4].Selected)
{
     decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[4].Value);
}
if (lbSnacks.Items[5].Selected)
{
     decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[5].Value);
}

当然,我评论它试图使用for循环。 我使用的循环是:

for (int i = 0; i < lbSelected.Items.Count; i++)
{
   decSnackSaleTotal += Convert.ToDecimal(lbSelected.Items[i]); 
}

lbSelected是我的第二个listbox,其中所选项目来自客户。 lbSnacks是我的第一个listbox小吃选择。

谢谢!

2 个答案:

答案 0 :(得分:0)

这种方法可以做你想要的,虽然你也需要访问循环中的Value属性,类似于你的if语句:

decSnackSaleTotal += Convert.ToDecimal(lbSelected.Items[i].Value);

这在功能上与您if语句的功能不同。

  • 在前一种情况下,如果选择了总值,则只为总计添加值。
  • 在后一种情况下,无论是否选中,都会添加所有值。

您可能想要在循环中检查它。

还有其他方法可以解决这个问题,但这至少比一次检查一个元素要好。

答案 1 :(得分:0)

可能您无法将项目转换为十进制,您似乎必须阅读属性,与 if 方法一样。

for (int i = 0; i < lbSelected.Items.Count; i++){
            decSnackSaleTotal += Convert.ToDecimal(lbSelected.Items[i].Value); 
}