Ok, a lot has happened here since yesterday.
@ldw-bas: TNet's List already has GetEnumerator() implemented, so it should be already usable in a foreach. I'm not sure what your changes would add.
The IEnumerable implementation allows for the usage of LINQ. LINQ it totally build on IEnumerable and IQueryable. I am not sure if it also solves the "new List() {bla, bla}" issue danfoo showed.
I did google on memory unity ios foreach, but that didn't give any results, but your link indeed explains it and references the same gamasutra article danfoo mentioned, which I also had found during my memory search. But if I understand it correctly the gamasutra article actually says you should just use foreach. The memory leak issue only occurs when using as class instead of a struct for the Enumerator (which is not done by the .NET classes) and if you use the mono compiler. If I understood it correctly it says if come across issues, switch to the free .NET sdk compiler and you are fine.
I do agree with danfoo on the long post, memory leaks do no longer refer to the same phenomenon occuring in c++. Although I don't consider myself old I thought the same about it. For example some memoryleak that is mentioned is when eventlisteners are not unsubscribed. That is just something that you used be aware of but not really a leak or an error in C# since this is expected behaviour in a lot of cases.
I am a still a bit cynical about the GC issues, but I have not created high performance games in unity. Still I think those issues are solved reasonably quick, with profiling, but than again maybe I am underestimating the problem here.