Tengo un diccionario de tipo Dictionary<string, IEnumerable<string>>
y una lista de valores de cadena. Por alguna razón, cada vez que hago un Agregar, se sobrescribe cada valor en el diccionario. Estoy completamente perplejo de por qué esto está sucediendo. Me aseguré de que no fuera un problema de referencia declarar e inicializar el objeto IEnumberable dentro del ciclo para que su alcance no salga de una iteración, y todavía lo hace. Aquí está mi código:¿Por qué Dictionary.Add sobrescribe todos los elementos en mi diccionario?
foreach (string type in typelist)
{
IEnumerable<string> lst =
from row in root.Descendants()
where row.Attribute("serial").Value.Substring(0, 3).Equals(type)
select row.Attribute("serial").Value.Substring(3).ToLower();
serialLists.Add(type, lst);
}
donde typelist
es un IEnumerable<string>
, root
es un XElement
y serialLists
es mi diccionario.
Usted ha "cerrado sobre la variable de bucle". Cada '' primer 'que agregue utilizará la variable * last * 'type'. Por favor, lea esto: http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx Curiosamente, este problema desaparecerá cuando llegue C# 5! – dlev
Definitivamente leeré sobre eso. ¡Gracias de nuevo a todos por la ayuda! – Annath