Arrays 数组循环不显示后续值

Arrays 数组循环不显示后续值,arrays,c#-4.0,Arrays,C# 4.0,我有一个C#WinForms应用程序,它使用StringBuilder为月份、星期几、时间、名称、日期和可选注释添加值 每个值后面都附加一个逗号,然后是下一个值。我创建了一个string[]数组string[]thisAssignment,然后将StringBuilder分配给数组,如下所示: thisAssignment=fsAssign.ToString().Split(','); 记录周一2周六作业(本作业) 我将数组传递给一个方法,在该方法中,我将数组的各个元素分配给变量,然后为SQL

我有一个C#WinForms应用程序,它使用StringBuilder为月份、星期几、时间、名称、日期和可选注释添加值

每个值后面都附加一个逗号,然后是下一个值。我创建了一个string[]数组string[]thisAssignment,然后将StringBuilder分配给数组,如下所示:

thisAssignment=fsAssign.ToString().Split(','); 记录周一2周六作业(本作业)

我将数组传递给一个方法,在该方法中,我将数组的各个元素分配给变量,然后为SQL INSERT语句参数化它们

我遇到的问题是,当我单步执行代码时,我可以看到周的月份和日期,即“星期一”。但是,在下一次迭代中,它再次显示星期一值,而不是移到星期二,等等

我展示了下面的循环

for (int i = 0; i < assignments.Length; i++ )
{
    month = assignments[0].ToString();
    dayOfWeek = assignments[1].ToString();
    fsTimes = assignments[2].ToString();
    name = assignments[3].ToString();
    date = assignments[4].ToString();
    comment = assignments[5].ToString();

    cmd.Parameters.Clear();
    List<SqlParameter> list = new List<SqlParameter>();
    list.Add(new SqlParameter("@month", month));
    list.Add(new SqlParameter("@dayOfWeek", dayOfWeek));
    list.Add(new SqlParameter("@fsTimes", fsTimes));
    list.Add(new SqlParameter("@names", name));
    list.Add(new SqlParameter("@dates", date));
    list.Add(new SqlParameter("@comments", comment));
    cmd.Parameters.AddRange(list.ToArray<SqlParameter>());
    int response = cmd.ExecuteNonQuery();
}
for(int i=0;i
我还尝试在数组的元素号之前或之后添加索引,如下所示

for (int i = 0; i < assignments.Length; i++ )
{
    month = assignments[i][0].ToString();
    dayOfWeek = assignments[i][1].ToString();
    fsTimes = assignments[i][2].ToString();
    name = assignments[i][3].ToString();
    date = assignments[i][4].ToString();
    comment = assignments[i][5].ToString();
}
for(int i=0;i
但是,循环没有显示正确的值,而是从月份名称中提取了一个字符。例如,当我选择2月份时,month变量用字母“F”填充,dayOfWeek变量用字母“e”,fsTimes用字母“b”填充,依此类推。在我最初的帖子中,我忽略了提到我使用了“I”索引和数组元素


如果有人对以不同的方式形成阵列循环提出了有用的建议,我很乐意听听。或者更好的是,看到一个建议,允许我从数组中提取多个值,并将它们分配给前面提到的变量。

我一直在尝试各种方法来解决这个问题,最终发现了在这种情况下有效的方法。由于仅使用单个索引只在第一次迭代中提供数据,并且使用“i”本身返回单个字符,因此我发现从第二个元素开始增加“i+=1”将返回所有行中的数据

我在下面展示我所做的

for (int i = 0; i < assignments.Count; i++)
{
    month = assignments[i];
    dayOfWeek = assignments[i += 1];
    fsTimes = assignments[i += 1];
    name = assignments[i += 1];
    date = assignments[i += 1];
    comment = assignments[i += 1];

    cmd.Parameters.Clear();

    List<SqlParameter> list = new List<SqlParameter>();
    list.Add(new SqlParameter("@month", month));
    list.Add(new SqlParameter("@dayOfWeek", dayOfWeek));
    list.Add(new SqlParameter("@fsTimes", fsTimes));
    list.Add(new SqlParameter("@names", name));
    list.Add(new SqlParameter("@dates", date));
    list.Add(new SqlParameter("@comments", comment));

    cmd.Parameters.AddRange(list.ToArray<SqlParameter>());

    int response = cmd.ExecuteNonQuery();

}
for(int i=0;i
由于您从未在循环中使用
i
,因此使用循环构造修改的变量:为什么您希望每次迭代都有不同的行为?