Я всегда был в замешательстве по этому поводу. Рассмотрим следующие циклы:
int [] list = new int [] { 1, 2, 3 };
for (int i=0; i < list.Length; i++) { }
foreach (int i in list) { }
while (list.GetEnumerator().MoveNext()) { } // Yes, yes you wouldn't call GetEnumerator with the while. Actually never tried that.
- Приведенный выше [список] жестко запрограммирован. Если бы список был изменен извне, пока цикл выполнял итерации, что бы произошло?
- Что, если [список] был свойством только для чтения, например.
int List{get{return(new int [] {1,2,3});}}
? Не нарушит ли это цикл. Если нет, будет ли он создавать новый экземпляр на каждой итерации?