How can you best explain why replacing an element of a collection you are looping using foreach is permited if you make a copy of it. Example:
foreach(Item item in Items)
{
item.modify //or remove or add
}
// will not work
foreach(Item item in Items.ToList())
{
item.modify //or remove. or add
}
//will work altough i dont get it because i am now iterating trough the temporary list
//and changing its elements.
//In my understanding its not like im iterating the list(.ToList) and modifying the source items
//(Items). A graphic representation would be welcome, my interest is to understand the
//matter logically
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…