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

Грешка в обхождане на масив.

В една задача която направих правилно с foreach, ме побърква леко че ми дава грешка ако се опитам да я направя с for. Не виждам защо се случва, но променливата излиза над допустимата проверка за цикъла.

https://pastebin.com/X2ShxfjK 

0
C# Fundamentals
krasi1105 avatar krasi1105 380 Точки
Best Answer

Направи си временна променлива, в която съхраняваш стойността на t и подавай нея.

var tempVar = t;
myPredicates.Add(new Predicate<int>(x => x % divisibleBy[tempVar] == 0));

Когато създаваш анонимна функция променливата, която и подаваш се дава по референция, а не по стойност. След като излезеш от цикъла всички елементи в листа ти са еднакви със стойност (x => x % divisibleBy[divisibleBy.Length]), откъдето идва и IndexOutOfRangeException.

0
NikolayPopov avatar NikolayPopov 253 Точки

Мерси много. 

0