Обычно такой код является ошибкой:
// 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");
}
Однако компилятор не может предположить, что пропущенные разрывы являются ошибкой. Насколько он знает, вы действительно хотели, чтобы дела провалились.
Если предположить, что перерывы должны быть в конце каждого случая, это будет просто обменять одну ошибку на другую ошибку.
Так что вместо этого разработчики языка запретили переход от непустых дел и выдают ошибку, если вы их опускаете.
Если вам нужен общий код для непустых дел, поместите его в private
(возможно static
) метод и вызовите его оттуда.
Последнее замечание: падение пустых ящиков - это все, что ожидается от пустого ящика, поэтому оно разрешено.