0

ジャグ配列にアイテムを追加しようとしていますが、データはdatarowviewから取得されています、次のコードがあります

foreach (DataRowView answer in AnswersInQuestion)
{
    answersJArray[index] = new string[noOfAnswersInQuestion];
    answersJArray[index][j] = answer["ChoiceText"].ToString();
    j++;
}

最初のアイテムは問題なく追加されますが、2番目のアイテムが入れられると、最初のアイテムは再びnullに設定されます。たとえば、最初のラウンドでは、これがアレイの外観になります。

arr[0][0] = answer 1
arr[0][1] = null
arr[0][2] = null
arr[0][3] = null

2回目の配列は次のようになります

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を通して毎回あなたは新しいものを作成し、それを同じインデックスにダンプしています。基本的に毎回書き直します。

このギザギザの配列を実現するためにリストを使用することで、より多くの用途が見つかるかもしれません。追加/削除が少し簡単になり、列挙するのに役立つ場合があります。

于 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 に答える