0

我已经学会了如何使用 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选择小吃的地方。

谢谢!

4

2 回答 2

0

尽管您也需要访问Value循环中的属性,但该方法应该可以满足您的要求,类似于您的if语句:

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

不过,这在功能上与您的if陈述不同。

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

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

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

于 2014-03-17T20:02:58.577 回答
0

可能您无法将项目转换为十进制,看来您必须像使用if方法一样读取Value属性。

for (int i = 0; i < lbSelected.Items.Count; i++){
            decSnackSaleTotal += Convert.ToDecimal(lbSelected.Items[i].Value); 
}
于 2014-03-17T20:03:42.573 回答