An enum declaration introduces a new type. It is declared in terms of an underlying type which if it is omitted defaults to int:
enum Days: int { Sunday = 1, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }
Each enum member has an associated value which is either given explicitly or it is one more than the associated value of the previous member.
Each enum declaration introduces a new type. An explicit conversion has to be done to convert between an enum type and an integer type:
Days tDays = (Days)3; int tSomeInt = (int)tDays;