I've read many time foreach was performing a bit less efficiently than for on arrays (because it need to constructor/use an iterator) and people were advocating to use for loops instead.
I'm a bit surprised about the compiler not optimizing it (aka: converting it to a simple for loop IL code code). The visual studio 2015 compiler does so much for us (C# 6 languages features) why not fixing this "not so well known" wrong usage of foreach?