関数からの戻り値をテストすると、奇妙な結果が得られます。このコードはforループ内にあります。
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が返されますが、呼び出し元のコードに戻ると、実行は「いいえ」である2番目のケースに流れ、これは私が意図していない継続を行います。
StackOverflowの他の場所で、DialogResult.Yesのような「フォールスルー」ケースのコーディングを提案するスレッドを見ました。
つまり、YESの場合、switchcaseの終了後に次のステートメントで実行を再開したいと思います。つまり、「フォールスルー」です。
編集-混乱してすみません。はい、一番上のスニペットはforループの中にあります。2番目のスニペットは呼び出された関数内にあります(そのコードはMessageBox.Showを発行します)。