通常、この種のコードはバグです。
// Contrived calculator demostration
decimal x = 5m;
decimal y = 10m;
decimal result = 0m;
string blah = "Divide";
// .. other code omitted
switch(blah) {
case "Divide":
result = x / y;
case "Multiply":
result = x * y;
case "Add":
result = x + y;
case "Subtract":
result = x - y;
default:
MessageBox.Show("Not a valid operation");
}
ただし、コンパイラは、欠落しているブレークがバグであると想定することはできません。それが知る限り、あなたは本当に事件が失敗することを望んでいました.
すべてのケースの最後にブレークが必要であると単純に仮定すると、1 つのバグを別のバグと交換することになります。
そのため、代わりに、言語設計者は空でないケースからのフォールスルーを許可せず、それらを省略するとエラーをスローします。
空でないケース間でコードを共有する必要がある場合は、それをprivate
(おそらくstatic
) メソッドに入れて、そこから呼び出します。
最後に 1 つ注意してください: 空のケースが失敗するのは、空のケースが期待されるすべてのことであり、それが許可されている理由です。