我有一个数组中的问题列表,当界面上的按钮被点击时,它将转到下一个问题,但是当它在最后一个问题时,它将切换到摘要页面并显示得分正确答案。当数组到达最后一个问题时,它会抛出“超出范围异常的参数未被处理”。我怎么能让阵列停下来让它在最后一个问题之后继续?
这是我继续讨论下一个问题的方法
感谢您的帮助,如果您需要再查看代码,请告诉我们。
答案 0 :(得分:5)
使用此条件。我假设你的阵列有20个项目,因为你的条件是> 20它打破指数。当你尝试访问数组[20]元素时,数组被zero
索引。
if (questionNumber >= qu.Count)
答案 1 :(得分:5)
我会考虑使用foreach循环并稍微重新设计您的解决方案:
public void DisplayQuestion(Question q)
{
txt_block_question.Text = qu.question;
btn_Answer_A.Content = q.a;
btn_Answer_B.Content = q.b;
btn_Answer_C.Content = q.c;
}
public void DisplaySummary()
{
foreach (var q in qu)
{
DisplayQuestion(qu);
}
NavigationService.Navigate(new Uri("/summary_page.xaml", UriKind.Relative));
}
foreach将为您处理索引。传递每个问题以显示也比依赖某些共享变量更好。