Does
foreach(T value in new List(oldList) )
is dangerous (costly) when oldList contains 1 millions of object T ?
More g
You could iterate through the list without using an enumerator, so do something like...
for(int i = 0;i