Domanda

sto cercando di aggiungere elementi agli array frastagliati, i dati vengono estratti da un datarowview, ho il seguente codice

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

il primo elemento viene aggiunto correttamente, ma quando il 2o elemento viene inserito nel primo elemento viene nuovamente impostato su null.quindi, ad esempio, la prima volta questo sarà l'aspetto dell'array

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

e la seconda volta apparirà l'array

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

qualcuno può aiutarmi in questo!!

Grazie

È stato utile?

Soluzione

Il tuo costruttore viene chiamato ogni volta (quindi il primo elemento viene impostato su null).Metti il ​​costruttore dell'array di stringhe all'esterno del ciclo for-each (magari nel suo stesso ciclo.

Altri suggerimenti

Hai bisogno di un ciclo nidificato, perché si sta creando una nuova matrice ogni volta e soffiando via quello vecchio.

//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++;
    }

Che cosa è l'indice? Non sembrano essere incrementarla, e ogni volta attraverso il vostro foreach si sta creando uno nuovo e il dumping nello stesso indice. Fondamentalmente riscrivere ogni volta.

Si potrebbe trovare più l'uso in un elenco utilizzando per raggiungere questo obiettivo matrice irregolare. Si farà l'aggiunta / rimozione di un po 'più facile, e potrebbe contribuire a un tocco di enumerazione.

Il mio approccio è quello di creare un hashset di array di stringhe quindi popolare a volontà, e alla fine, convertire ToArray ()

per es.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top