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

C# 使用for循环而不是if语句从列表框中累积值,c#,asp.net,for-loop,visual-web-developer-2010,listboxitems,C#,Asp.net,For Loop,Visual Web Developer 2010,Listboxitems,我已经学会了如何用if语句累加总数,现在我正试图缩短代码。 我的一个朋友告诉我,你可以使用FOR循环来实现这一点,所以我尝试了一下,但我很难完全理解FOR循环 我的如果代码是这样的 if (lbSnacks.Items[0].Selected) { decSnackSaleTotal = decSnackSaleTotal + Convert.ToDecimal(lbSnacks.Items[0].Value); } if (lbSnacks.Items[1].Selected) {

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

我的
如果
代码是这样的

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]); 
}
for(int i=0;i
lbSelected
是我的第二个
列表框
,其中所选项目来自客户。
lbsnakts
是我的第一个
列表框
,其中包含零食选择


谢谢

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

decSnackSaleTotal += Convert.ToDecimal(lbSelected.Items[i].Value);
这在功能上与
if
语句所做的不同

  • 在前一种情况下,如果选择了该值,则仅向总数中添加一个值
  • 在后一种情况下,您将添加所有值,而不管是否选择
你可能想在你的循环中检查它


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

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

for (int i = 0; i < lbSelected.Items.Count; i++){
            decSnackSaleTotal += Convert.ToDecimal(lbSelected.Items[i].Value); 
}
for(int i=0;i
for循环看起来正常,您能否提供更多关于哪些不起作用的信息?我注意到在for循环中没有使用.Value(但在if语句中使用了)。这是故意的吗?