Разница for и foreach в C#?

В чем собственно разница между этими двумя циклами?

foreach(это способ прокрутки элементов чего-то, реализующего интерфейс IEnumerable) оператор используется для итерации по коллекции для получения необходимых сведений, однако его нельзя использовать для добавления или удаления элементов из исходной коллекции, во избежание непредвиденных побочных эффектов, если требуется добавить или удалить элементы из исходной коллекции лучше использовать for. Фактически, for используется для выполнения блока операторов до тех пор, пока указанное условие является истинным.