Софтуерно Инженерство
Loading...
+ Нов въпрос
WestsideBG avatar WestsideBG 55 Точки

Въпрос относно Foreach Loop

Здравейте, може ли някой да ми обясни защо когато итерирам през колекция с Foreach не мога да променям променливата на която се намирам ? 

Пример:

int[] nums = 1,2,3,4,5

foreach (var num in nums)
{
 num += 1;
}

Exception: Cannot assign to num because it is a 'foreach iteration variable'. 

Благодаря предварително. (Може въпроса да не е за този курс, но съм на Advanced, а не ми се бе случвало преди. Явно не ми е трябвало да го ползвам :D )

Тагове:
0
C# Advanced
TeodorStefanovPld avatar TeodorStefanovPld 1284 Точки

https://stackoverflow.com/questions/7838079/why-cant-we-assign-a-foreach-iteration-variable-whereas-we-can-completely-modi

 ако такива неща те спъват те чака грубо събуждане сега на с# fundamentals

foreach-a само чете така да се каже хвърля погледа на елементите не като for loop да итерира върху самите елементи.в линка са го обяснили добре.

1
WestsideBG avatar WestsideBG 55 Точки

Спъват е грубо казано :D Дали с for цикъл ще го направя или с lambda все тая просто исках да знам причината :D 

0
TeodorStefanovPld avatar TeodorStefanovPld 1284 Точки

да е ок. ама с това отношение да не можеш да си обясниш нещо простичко,или поне да намериш отговора за 1 мин в google ще ти е забавно на ооп и на базите.. нали ги гледах колегите в курсовете досега как изгърмяха накрая като стана сложно :D макар че сега на с# web ще е още по-забавно.

0
AlucardDracula avatar AlucardDracula 403 Точки

Както колегата споделил foreach e readonly, може да итерира, но не и да променя стойнистите. 

 

Това което искаш да направиш се прави с LINQ и ламда израз, 

int[] nums = { 1, 2, 3, 4, 5 };

nums = nums.Select(x => x + 1).ToArray();

Console.WriteLine(String.Join(",",nums));

изход:
 

2, 3, 4, 5, 6

 

1
29/08/2018 17:45:14
WestsideBG avatar WestsideBG 55 Точки

Благодаря, аз знам как да се справя с проблема. Просто не знаех, че foreach е само readonly.

0