Un compañero de trabajo mío vino a través de esto el otro día mientras estábamos trabajando en la mejora de un proyecto a .NET 4.OrderedDictionary ¿cambio de última hora en .Net 4?
Dado el siguiente código:
var od = new System.Collections.Specialized.OrderedDictionary();
od.Add("key1", "value1");
od.Add("key2", "value2");
foreach (System.Collections.DictionaryEntry entry in od)
{
od[entry.Key] = null;
}
En .Net 3.5, el establecimiento de una entrada a null funcionará bien. Como se esperaba, la clave aún estaría en el diccionario, y su valor coincidente sería nulo.
En .Net 4.0, esto arroja una InvalidOperationException que dice "La colección fue modificada, la operación de enumeración puede no ejecutarse".
Pensé que tal vez había un cambio en OrderedDictionary donde establecer una entrada a null lo eliminaría por completo, pero haciendo una prueba rápida dice que la entrada todavía está allí cuando la configura en nulo.
¿Se trata de un cambio radical que no se ha informado?
¿Estás seguro de que el problema no está en tratar de cambiar la entrada desde un bucle 'foreach', en lugar de simplemente establecerlo en' nulo'? – Oded