나는 Dictionary<string, IEnumerable<string>>
유형의 사전과 문자열 값 목록을 가지고 있습니다. 어떤 이유로 Add를 할 때마다 사전의 모든 값을 덮어 씁니다. 왜 이런 일이 벌어지고 있는지에 대해 완전히 혼란 스럽습니다. 루프의 IEnumberable 객체를 선언하고 초기화하여 참조의 문제가 아닌지 확인하여 스코프가 하나의 반복 밖에 있지 않고 여전히 수행합니다. typelist
가 IEnumerable<string>
입니다Dictionary.Add가 사전의 모든 항목을 덮어 쓰는 이유는 무엇입니까?
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);
}
는 root
는 XElement
이며, serialLists
내 사전입니다 : 여기 내 코드입니다.
:
는 여기를 해결하는 한 가지 쉬운 방법입니다. 추가 한 모든 lst는 * last *'type' 변수를 사용합니다. 다음을 읽어보십시오 : http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-considered-harmful.aspx 흥미롭게도이 문제는 C와 함께 사라집니다. # 5! – dlev
나는 그것을 확실히 읽을 것입니다. 도와 주신 모든 분들께 다시 한번 감사드립니다! – Annath