Ho un dizionario:come aggiornare i valori mentre si iterano gli elementi del dizionario?
Dictionary<string, long> Reps = new Dictionary<string, long>();
e voglio aggiornare i valori, mentre l'iterazione attraverso tutti gli elementi, in questo modo:
foreach (string key in Reps.keys)
{
Reps[key] = 0;
}
mi sta dando un errore che dice:
"Collection was modified; enumeration operation may not execute"
qualcuno può dirmi perché mi sta dando questo errore, perché ho un'altra funzione che aggiunge il valore, e viene chiamata quando si fa clic sul pulsante:
public static void Increment(string RepId, int amount)
{
long _value = Convert.ToInt64(Reps[RepId]);
_value = _value + amount;
Reps[RepId] = _value;
}
e questa funzione funziona correttamente. quindi qual è il problema quando si aggiornano tutti i valori? E qual è la soluzione per questo?
sua wokring ma avete solo rispondeva parte dei miei articoli su la soluzione ... puoi spiegare di più su che cosa è la causa dell'errore? –
Beh, suppongo che il foreach sia basato sulla collezione e se cambi la collezione come può il foreach determinare quali parti sono lasciate da elaborare e cosa no? Per esempio. se dovessi aggiungere un nuovo Reps [x] durante l'iterazione ti aspetteresti che partecipi al foreach oppure no? – Pleun