我试图将项目添加到锯齿状数组中,数据从数据视图中提取,我有以下代码
foreach (DataRowView answer in AnswersInQuestion)
{
answersJArray[index] = new string[noOfAnswersInQuestion];
answersJArray[index][j] = answer["ChoiceText"].ToString();
j++;
}
第一项添加得很好,但当第二项放入第一项时再次设置为空。所以例如第一次这是数组的样子
arr[0][0] = answer 1
arr[0][1] = null
arr[0][2] = null
arr[0][3] = null
第二轮数组看起来像
arr[0][0] = null
arr[0][1] = answer 2
arr[0][2] = null
arr[0][3] = null
任何人都可以帮助我!!
感谢
答案 0 :(得分:2)
每次调用构造函数(因此第一个项目设置为null)。将你的字符串数组构造函数放在for-each循环之外(可能在它自己的循环中。
答案 1 :(得分:1)
你需要一个嵌套循环,因为你每次都要创建一个全新的数组并将旧的数组吹走。
//souround with a loop that increments index whenever you want to create a new group of questions
answersJArray[index] = new string[noOfAnswersInQuestion];
foreach (DataRowView answer in AnswersInQuestion)
{
answersJArray[index][j] = answer["ChoiceText"].ToString();
j++;
}
答案 2 :(得分:1)
索引是什么?你似乎没有增加它,每次通过你的foreach你创建一个新的并将其转储到相同的索引中。每次都基本上重写它。
您可能会发现使用List来完成这个锯齿状数组会有更多用处。这将使添加/删除更容易,它可能有助于枚举。
答案 3 :(得分:0)
我的方法是创建一个字符串数组的哈希集,然后随意填充,最后转换为ToArray()
e.g。
HashSet<string[]> data = new HashSet<string[]>();
data.Add(new string[] { "mode", "create" });
data.Add(new string[] { "title", this.TextBoxCreateTitle.Text });
data.ToArray(); // our jagged array