0

我试图将项目添加到锯齿状数组中,数据是从 datarowview 中提取的,我有以下代码

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

谁可以帮我这个事 !!

谢谢

4

4 回答 4

2

每次都会调用您的构造函数(因此第一项设置为 null)。将您的字符串数组构造函数放在您的 for-each 循环之外(可能在它自己的循环中。

于 2010-02-23T17:54:03.917 回答
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++;
    }
于 2010-02-23T17:55:12.340 回答
1

什么是索引?您似乎没有增加它,并且每次通过您的 foreach 时,您都会创建一个新的并将其转储到同一个索引中。基本上每次都重写。

您可能会发现使用 List 来完成这个锯齿状数组有更多用处。这将使添加/删除变得更容易一些,并且可能有助于枚举。

于 2010-02-23T17:55:30.623 回答
0

我的方法是创建一个字符串数组的哈希集,然后随意填充,最后转换 ToArray()

例如

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
于 2011-04-14T18:48:29.250 回答