In both cases, an enum is actually a unique type, not just a fancy way to crate a bunch of integer constants. With the regular old deprecated "enum", it is implicitly convertible to and from an int, which is why in old code you often see it used that way. It isn't actually an int, but it can be converted to and from an int without explicitly casting.