Have a look at this code: enum Named { uint foo = 1; bar = 2; }; enum /* anonymous */ { uint fred = 1; wilma = 2; }; In the above, unless I'm mistaken, typeof(bar) is uint, but typeof(wilma) is int. Right? So just naming a previously unnamed enum changes the types of the elements? Ick.