В одном цикле я постоянно получаю System.ArgumentOutOfRangeException:
C#
for(int i=0; i<Answers.Count; i++)
{
Answers[i].BeginInvoke(new InvokeDelegate(() => { Answers[i].Enabled = false; Answers[i].Visible = false; }));
}
Длина Answers
- 6, но при проверке оказалось что i
достигает 6! Это же невозможно(или я ошибаюсь)?
Типичная ошибка с захватом переменной. Попробуйте это
for(int i=0; i<Answers.Count; i++)
{
int j = i;
Answers[i].BeginInvoke(new InvokeDelegate(() => { Answers[j].Enabled = false;
Answers[j].Visible = false; }));
}
Проблема в том, что всё, что внутри этого кода BeginInvoke(....)
запускается не сразу, а через какой то промежуток времени. К тому моменту ваш цикл уже закончился и переменная i уже равна Answers.Count.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Возможна ли передача массива в параметр SQL? Если я хочу массово удалить, или проставить статусы списку заказов, как это сделать?
Есть класс Colum<T>, Есть класс Row со списком List<Colum>И есть проблема, List<Colum> требует указать ещё тип T аки List<Colum<int>>, но мне не нужно...
Я знаю, что Open Server имеет в комплектации консоль, откуда есть доступ к ComposerТем не менее, я бы хотел обойтись без этой консоли и работать с Composer...
есть текст [a]какой то текст[/a] еще куча какого то текста, [a]какой то текст[/a] есть регулярка /(\[a+\/a\])/ если текст без переноса строки, то находит...