在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循环值时遇到问题:
- y到工作表区域和单元格
- 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。只是去掉了多行代码,同时学习了循环。
问题的第一部分是:
y += x + 13;
您正在将y
的值递增x+13
。
所以在第一次迭代中,y
是0
,x
是0
,得到y=13
。然而,在第二次迭代中,y
是13
,x
是1
。因此,您将y
增加1+13
,最终得到y=27
。在第三次迭代中,y
是27
,x
是2
,所以您递增27+(13+2)
,所以递增y=42
。(等)
如果在第一次迭代中,您的y
必须是13
,在第二次迭代中必须是14
,等等,那么您需要将其设置为:
y = x + 13;
无+=
问题的第二部分是,不能只将表达式的结果计算为变量的名称(这可以通过反射来完成,但我们忘了这一点)。
因此,与其有变量v1
、v2
、v3
等,以及i1q
、i2q
等,这里有意义的是有某种数组或列表。
因此,无论你在哪里定义这些变量,你都应该有这样的东西(我无法计算出类型,因为你给出的名称不是很描述性,所以我会计算出它们是整数,根据需要更改类型):
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)进行迭代。