ASP.Net C#ジャグ配列に項目を追加
-
22-09-2019 - |
質問
イムジャグ配列のに項目を追加しようとすると、データがdatarowviewから引き出されている、私は次のコード
を持っていますforeach (DataRowView answer in AnswersInQuestion)
{
answersJArray[index] = new string[noOfAnswersInQuestion];
answersJArray[index][j] = answer["ChoiceText"].ToString();
j++;
}
は最初の項目は罰金に追加されますが、第二項目が最初の項目に入れられたときに再び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
この!!
のいずれかのヘルプ、私ことができます感謝
解決
は、コンストラクタは、各時間(nullに設定され、したがって最初の項目)と呼ばれています。あなたのために、各ループのあなたの文字列配列のコンストラクタ外側は(おそらく、独自のループに入れます。
他のヒント
あなたはブランドの新しい配列を毎回作成し、離れて古いものを吹いているので、あなたは、ネストされたループを必要とします。
//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++;
}
インデックスとは何ですか?あなたはそれをインクリメントしていないようですし、あなたのforeachを介して各時間は、あなたは新しいものを作成し、同じインデックスにそれをダンプしています。基本的にはそれを毎回書き換えます。
あなたはこのジャグ配列を達成するためにリストを使用してより多くの使用を見つけるかもしれません。それは少し楽に削除/追加するようになりますし、それが列挙にタッチを助けるかもしれない。
は私のアプローチは、次いで随意に移入文字列配列のHashSetのを作成し、最後に、変換して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
所属していません StackOverflow