コレクションのコピーを作成する場合、foreach を使用してループしているコレクションの要素を置き換えることが許可される理由を最もよく説明するにはどうすればよいでしょうか。例:
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