【发布时间】:2011-07-16 21:49:27
【问题描述】:
我在测试函数的返回值时得到了奇怪的结果。此代码在 for 循环中:
DialogResult result = EvalReturnFromWS(returnMsg);
switch (result)
{
case DialogResult.Yes:
case DialogResult.No:
continue;
default:
break;
}
这是来自被调用函数的 sn-p(在我的单元测试中,我总是单击“是”按钮):
DialogResult result = MessageBox.Show(mbText.ToString(), caption, button, icon);
switch (result)
{
case DialogResult.Yes:
return DialogResult.Yes;
case DialogResult.No:
return DialogResult.No;
case DialogResult.Cancel:
return DialogResult.Cancel;
}
当我单击“是”时,它返回 DialogResult.Yes 但返回调用代码,执行流向第二种情况,即“否”,这会继续,这是我不打算的。
在 StackOverflow 的其他地方,我看到一个线程建议像我为 DialogResult.Yes 编写的“失败”案例进行编码。
简而言之,如果是,我想在 switch case(s) 结束后继续执行下一条语句。也就是“落空”。
编辑 - 很抱歉造成混淆。是的,顶部的 sn-p 在 for 循环内。第二个 sn-p 在被调用函数内(该代码发出 MessageBox.Show)。
【问题讨论】:
-
为什么你的第二个 sn-p 不能只是
return result?或者至少,如果是、否或取消,return result? -
嗯,我很困惑。 switch 语句上下文中的“跌倒”意味着您“跌倒”到下一个案例,而不是退出 switch 语句。
-
在
switch语句的上下文中,“失败”非常具体地表示“从一个case传递到下一个”。如果你想说“在switch之后的下一条语句继续执行”,你应该说“break”。
标签: c# winforms switch-statement messagebox dialogresult