Здравствуйте, Lloyd, Вы писали:
L>Если мне не изменяет мой склероз, компилятор если видит, что идет foreach-енье массива, разворачивает его в простой for, так что, на мой взгляд, ты ничего, кроме худшей четабельности, не теряешь.
Склероз тебе не изменяет

Специально проверял ILDasm'ом — для массива foreach разворачивается в обычный for с использованием доступа по индексу.
Возникает резонный вопрос, как для своего класса сделать так же? Даст ли такой же эффект использование
public IEnumerator GetEnumerator()
{
for (i=0; i<this.Count; i++)
yield return this[i];
}

К сожалению времени проверить нету...