C# For循环从不满足条件
在当前页面(包含在主窗口内的框架内)中,当我单击按钮时,会发生以下情况:C# For循环从不满足条件,c#,wpf,if-statement,C#,Wpf,If Statement,在当前页面(包含在主窗口内的框架内)中,当我单击按钮时,会发生以下情况: for (int i = 0; i < mw.pizzas.Length + 1; i++) { if (i == 10) { MessageBoxResult result = MessageBox.Show("You can't order more than 10 pizzas"); break; }
for (int i = 0; i < mw.pizzas.Length + 1; i++)
{
if (i == 10)
{
MessageBoxResult result = MessageBox.Show("You can't order more than 10 pizzas");
break;
}
if (mw.pizzas[i] == null)
{
mw.pizzas[i] = pizza;
break;
}
}
NavigationService.Content = new AnotherPage();
我在当前页面上对其进行了定义,如下所示:
MainWindow mw = new MainWindow();
该循环通过使用变量“pizza”的内容定义这10个插槽来递增。定义数组的所有索引后,应弹出一条消息。然而,这条信息从未出现。我做错了什么
编辑:这只是一个猜测。这可能与我每次导航到此页面时创建一个新的CurrentPage有关。每次定义其中一个索引时,它都会导航回上一页,然后使用NavigationService.Content=new CurrentPage()代码>
编辑2:看起来第二个语句有问题mw.pizzas[0]
为空,然后在其中获取pizza的内容,然后在程序退出页面并再次进入页面后以某种方式返回为空
编辑3:我试图使pizzaIDs数组保持静态,但出现以下错误:无法使用实例引用访问成员“MainWindow.pizzaIDs”;改为使用类型名限定它循环从0到9(含9),数组指示,当它达到10时,它脱离循环而不执行。I将+1添加到长度I
。即使是现在,在我把它改成9之后,它仍然不起作用。啊,错过了。很抱歉。你试过在messagebox行上设置断点吗?messagebox行也在代码的上面。我想是的,我看到了。问题是,你是否真的做到了,但它根本没有显示出来?我曾经在非gui线程上执行过这种情况,我认为问题的出现是因为条件永远无法得到满足。我确实在条件之外测试了这段代码,消息框确实出现了。这是因为您一直在new
ing newmain窗口
s。每个main窗口
都有自己的pizzas副本
。您需要将pizzas
更改为static
或只new
向上一个MainWindow
。我将其更改为static,但出现以下错误:无法使用实例引用访问成员“MainWindow.pizzas”;用类型名限定它,而不是用异常自解释。使用main window.pizzas
而不是'mw.pizzas。
MainWindow mw = new MainWindow();