예를 들어foreach 루프에서 쿼리 수집이 변경된 이후에 오류가 발생해야합니까?
var query = myDic.Where(x => !blacklist.Contains(x.Key));
foreach (var item in query)
{
if (condition)
blacklist.Add(item.key+1); //key is int type
ret.add(item);
}
return ret;
이 코드가 유효합니까? 어떻게 개선 할 수 있습니까?
업데이트 됨
내 blacklist.add(item.key+1)
이 ret
이 작을 것으로 예상됩니다. ToList()
방식은 이러한 의미에서 내 의도를 달성하지 못합니다. 에는 정확하고 모호하지 않은 다른 더 좋은 아이디어가 있습니다.
예.콜렉션 내부 객체를 변경하는 것은 콜렉션을 반복 할 때 엄격히 금지됩니다. – RLH
'blacklist'에 항목을 삽입하면 'blacklist'의 업데이트 된 내용이 후속 루프 반복에 영향을 주어야합니까? –
@Anthony Pegram : 나는 그렇게 희망한다. – colinfang