C# を使用して、switch ステートメントの各ケース ブロックでブレークを使用する必要があるようです。
この理由は、次の case ステートメントに進むことができる他の言語で見ることができます。
ケースブロックが他のケースブロックに落ちる可能性はありますか?
どうもありがとう、本当にありがとう!
C# を使用して、switch ステートメントの各ケース ブロックでブレークを使用する必要があるようです。
この理由は、次の case ステートメントに進むことができる他の言語で見ることができます。
ケースブロックが他のケースブロックに落ちる可能性はありますか?
どうもありがとう、本当にありがとう!
はい、2 つの方法で次のケース ブロックに進むことができます。休憩を必要としない空のケースを使用するgoto
か、次の (または任意の) ケースにジャンプするために使用できます。
switch (n) {
case 1:
case 2:
case 3:
Console.WriteLine("1, 2 or 3");
goto case 4;
case 4:
Console.WriteLine(4);
break;
}
「中断」の強制は、バグを止めるためにあります。フォールスルーを強制する必要がある場合は、「goto case」を使用します (を適切な値に置き換えます)。
次の例は、何ができるかを示しています。
switch(n)
{
case 1:
case 2:
//do something for 1+2
//...
goto case 3;
case 3:
//do something for 3, and also extra for 1+2
//...
break;
default:
//do something for all other values
//...
break;
}
http://msdn.microsoft.com/en-us/library/06tc147t%28VS.80%29.aspxを参照してください。
C# はコンストラクトによる暗黙的なフォール スルーをサポートしていませんが、それでもbreak
(or goto
) は存在する必要があります ( msdn )。あなたができる唯一のことは、次の方法でケースを積み重ねることです:
switch(something) {
case 1:
case 2:
//do something
break;
case 3:
//do something else
}
しかし、それbreak
(または のような別のジャンプステートメントgoto
)がそこにある必要があります。
私の C# (.NET 1.1、CF) コードでは、これらの両方が許可されています。
switch (_printerChoice)
{
case BeltPrintersEnum.ZebraQL220:
return new ZebraQL220Printer();
break;
case BeltPrintersEnum.ONeal:
return new ONealPrinter();
break;
default:
return new ZebraQL220Printer();
break;
}
switch (_printerChoice)
{
case BeltPrintersEnum.ZebraQL220:
return new ZebraQL220Printer();
case BeltPrintersEnum.ONeal:
return new ONealPrinter();
default:
return new ZebraQL220Printer();
}
...しかし、休憩があると、それらはグレー表示されるため、意味がないと見なされます. したがって、少なくとも私の場合、それらは許可されていますが、必須ではありません。