在C#中,我的for循环的正确语法是什么

本文关键字:语法 是什么 循环 for 我的 | 更新日期: 2023-09-27 18:26:36

我制作了一个wpf程序,并使用此for循环来获取项目名称、数量和prc值,并将它们转换为字符串,以在我加载到应用程序中的电子表格上显示它们。

到目前为止,我的工作代码是:

worksheet1.Range["C14:D14:E14"].Value = got_item;
worksheet1.Cells["A14"].Value = qty.Value.ToString();
worksheet1.Cells["G14"].Value = prc.Value.ToString();
v1 = got_value;
i1q = Int32.Parse(qty.Value.ToString());
i1p = prc.Value;

然而,我将不得不再重复12次,直到:

worksheet1.Range["C26:D26:E26"].Value = got_item;
worksheet1.Cells["A26"].Value = qty.Value.ToString();
worksheet1.Cells["G26"].Value = prc.Value.ToString();
v13 = got_value;
i13q = Int32.Parse(qty.Value.ToString());
i13p = prc.Value;

它工作得很好,但看起来不太吸引人,所以我试图为它创建一个for循环,但我对for循环几乎没有经验。

我尽了最大努力,到目前为止我的进步如下:

for(x=0;x<13;x++)
{
    y += x + 13;
    worksheet1.Range["C"+y+":D"+y+":E"+y].Value = "";
    worksheet1.Cells["A"+y].Value = qty.Value.ToString();
    worksheet1.Cells["G"+y].Value = prc.Value.ToString();
    v + x = got_value;
    i + x + q = Int32.Parse(qty.Value.ToString());
    i + x + p = prc.Value;
}

我在连接x和y的for循环值时遇到问题:

  1. y到工作表区域和单元格
  2. x来调用v(x),i(x)q和i(x)p

更新:感谢Jcl,这是我的最终结果:

for (x = 0; x < 13; x++)
{
    y = x + 14;
    y.ToString();
    b[x] = worksheet1.Range["C" + y + ":D" + y + ":E" + y].Value.ToString();
    if (b[x] == "")
        {
            worksheet1.Range["C" + y + ":D" + y + ":E" + y].Value = got_item;
            worksheet1.Cells["A" + y].Value = qty.Value.ToString();
            worksheet1.Cells["G" + y].Value = prc.Value.ToString();
            v[x] = got_value;
            iq[x] = Int32.Parse(qty.Value.ToString());
            ip[x] = prc.Value;
        }
}

尽管这并不起作用,因为if语句在没有else-if的情况下循环,但一个简单的解决方案是只创建一个单独的if语句,并循环else-if部分12次。

如果可以应用的话,我会尝试研究案例,但无论如何,再次感谢Jcl。只是去掉了多行代码,同时学习了循环。

在C#中,我的for循环的正确语法是什么

问题的第一部分是:

y += x + 13;

您正在将y的值递增x+13

所以在第一次迭代中,y0x0,得到y=13。然而,在第二次迭代中,y13x1。因此,您y增加1+13,最终得到y=27。在第三次迭代中,y27x2,所以您递增27+(13+2),所以递增y=42。(等)

如果在第一次迭代中,您的y必须是13,在第二次迭代中必须是14,等等,那么您需要将其设置为:

y = x + 13;

+=

问题的第二部分是,不能只将表达式的结果计算为变量的名称(这可以通过反射来完成,但我们忘了这一点)。

因此,与其有变量v1v2v3等,以及i1qi2q等,这里有意义的是有某种数组或列表。

因此,无论你在哪里定义这些变量,你都应该有这样的东西(我无法计算出类型,因为你给出的名称不是很描述性,所以我会计算出它们是整数,根据需要更改类型):

int[] v = new int[14];
int[] iq = new int[14];
int[] ip = new int[14];

因此,当访问循环中的变量时:

v[x] = got_value;
iq[x] = Int32.Parse(qty.Value.ToString());
ip[x] = prc.Value;

请注意,c#中的数组是基于索引0的,但这是正确的,因为您的for循环,如当前所述,从0到12(而不是从1到13)进行迭代。