我得到了奇怪的結果,它測試函數的返回值。此代碼是在for循環:如何編寫switch語句來測試DialogResult並提供邏輯落空
DialogResult result = EvalReturnFromWS(returnMsg);
switch (result)
{
case DialogResult.Yes:
case DialogResult.No:
continue;
default:
break;
}
這裏距離稱爲函數的代碼段(在我的單元測試,我總是單擊「是」按鈕):
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的其他地方,我看到一個線程提示編寫一個「fall-through」的例子,就像我爲DialogResult.Yes所做的那樣。
總之,如果是,我希望在開關盒結束之後繼續執行下一個語句。那就是「通過」。
編輯 - 抱歉混淆。是的,頂部代碼片段在for循環中。第二個片段位於被調用的函數內(該代碼發出MessageBox.Show)。
爲什麼不能你的第二個片段只是'返回結果'?或者至少,如果是或否或取消,返回結果? – BoltClock 2011-03-16 20:04:23
恩,我很困惑。在switch語句的語境中,「fall trough」意味着你「落井下石」到下一個案例,而不是你退出switch語句。 – steinar 2011-03-16 20:08:50
在'switch'語句的上下文中,「fall through」意思是「從一個'case'轉到下一個」。如果你的意思是「用'switch'後面的下一個語句繼續執行」,你應該說「break」。 – AakashM 2011-03-16 20:10:36