Мне было интересно, почему С# требует, чтобы я использовал break в инструкции switch, хотя оспаривание семантики по определению не допускается. следовательно, компилятор мог бы сгенерировать break в конце каждого case -блока и избавить меня от хлопот.
Однако есть один сценарий (который уже обсуждался на этом сайте), который я мог бы придумать, что может быть причиной явного использования break:
switch (foo) {
case 0:
case 1:
bar();
break;
default:
break;
}
Здесь метод bar() вызывается, если foo имеет либо значение 0, либо 1.
Этот параметр нарушит истинное значение слова, если компилятор будет генерировать операторы break сам по себе. Это и есть ли причина, почему перерыв является обязательным или существуют другие веские причины?