How is it that an enum derives from System.Enum and is an integer at the same time?
Edit : Comments at bottom. Also, this . Here's what's kind of confusing me. My understanding is that if I have an enum like this... enum Animal { Dog, Cat } ...what I've essentially done is defined a value type called Animal with two defined values, Dog and Cat . This type derives from the reference type System.Enum (something which value types can't normally do—at least not in C#—but which is permitted in this case), and has a facility for casting back and forth to/from int values. If the way I just described the enum type above were true, then I would expect the following code to throw an