Посмотрите на фрагмент кода:
Это то, что я обычно делаю при кодировании против перечисления. У меня есть escape по умолчанию с InvalidOperationException (я не использую ArgumentException или один из его деривалов, потому что кодирование противоречит частному экземпляру, а не входящему параметру).
Мне было интересно, кодируют ли ваши коллеги-разработчики и этот побег...
public enum DrivingState {Neutral, Drive, Parking, Reverse};
public class MyHelper
{
private DrivingState drivingState = DrivingState.Neutral;
public void Run()
{
switch (this.drivingState)
{
case DrivingState.Neutral:
DoNeutral();
break;
case DrivingState.Drive:
DoDrive();
break;
case DrivingState.Parking:
DoPark();
break;
case DrivingState.Reverse:
DoReverse();
break;
default:
throw new InvalidOperationException(
string.Format(CultureInfo.CurrentCulture,
"Drivestate {0} is an unknown state", this.drivingState));
}
}
}
В обзорах кода я встречаю много реализаций с только выражением break в escape-умолчанию по умолчанию. Это может быть проблемой с течением времени.