Несмотря на то, что внешний вид будет менее «современным», он, скорее всего, будет настолько быстрым и удобным для использования, чтобы просто использовать цикл For в описанном случае, т. Е .:
while ((fields = csv.GetCSVLine()) != null) {
if (header) {
for(int ii = 0; ii < fields.Count; ii++) {
headers.Add(field);
} } }
Конечно, я уверен, что проблема была решена несколько лет назад, но я просто делаю это, чтобы помочь другим просматривать. Лично я думаю, что немного глупо, что нам не разрешено присваивать значения итераторам foreach (я подозреваю, что они могут легко покрыть препятствие (как оно есть) во время компиляции и / или выполнения).