Информация об изменениях

Сообщение Подводные камни enum от 08.05.2019 3:44

Изменено 08.05.2019 3:46 Разраб

Подводные камни enum
В процессе работы заметил, что
enum довольно "слабый" тип, который скорее является простым алиасом/набором констант для
численных типов.
Так, доступим есть тип
 
enum Month
{
    Jan = 1,
    Feb = 2
}

тогда, если
var zero = default(Month); //=> 0

или
var m = (Month)10; //=> 10!!!
var t = m.GetType(); //=> Month!!!


Т.е. что первый код, что второй приводят к скрытой ошибке.
Таким образом, мы вынужденны всегда проверять значение через
Enum.IsDefined
,
что согласитесь неудобно.
Подводные камни enum
В процессе работы заметил, что
enum довольно "слабый" тип, который скорее является простым алиасом/набором констант для
численных типов.
Так, доступим есть тип
 
enum Month
{
    Jan = 1,
    Feb = 2
}

тогда, если
var zero = default(Month); //=> 0

или
var m = (Month)10; //=> 10!!!
var t = m.GetType(); //=> Month!!!


Т.е. что первый код, что второй приводят к скрытой ошибке.
Таким образом, мы вынужденны всегда проверять значение через
Enum.IsDefined

, что согласитесь неудобно.