Loading...
NikolayPopov avatar NikolayPopov 253 Точки

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

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

https://pastebin.com/X2ShxfjK 

0
Module: C# Advanced
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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.