В процессе работы заметил, что
enum довольно "слабый" тип, который скорее является простым алиасом/набором констант для
численных типов.
Так, доступим есть тип
enum Month
{
Jan = 1,
Feb = 2
}
тогда, если
var zero = default(Month); //=> 0
или
var m = (Month)10; //=> 10!!!
var t = m.GetType(); //=> Month!!!
Т.е. что первый код, что второй приводят к скрытой ошибке.
Таким образом, мы вынужденны всегда проверять значение через
Enum.IsDefined
, что согласитесь неудобно.