I was a bit puzzled by this and I more or less considered this to be some sort of bug in the .Net framework
This is not a bug, and although I sometimes would like it to behave differently, it does give enums a new use.
Consider the following:
SpareTire = 1,
Family = Standard | ElectricWindows | Heater,
Luxury = Family | AirCon
As shown above it is posible to define your vehicle just by adding the single components. I think MS calls it flags, and the keys issue is that your primitive enum values must map to different bits.
(var & Accesories.Family) == Accesories.Familywill determine whether the level is at least Family. You can use other binary operators to anlyse the value of your enums.
I have succesfully collected data by just adding the simple values together and in the end just validated that it was actually a valid enum value. the validation and decission of the application is build into the structure of the enum instead of written in code.
In the example it is possible to add all primitive values together, but it is also very usefull when you have to select one or the other. Male or female for instance.
I'm looking very much forward to using kanaugh maps together with my enums :D