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