Отражатель IL Spy может объяснить это.
Посмотрите на декомпилированное перечисление, и вы увидите нечто, похожее на это:
.class public auto ansi sealed ConsoleApplication1.Foo
extends [mscorlib]System.Enum
{
// Fields
.field public specialname rtspecialname int32 value__
.field public static literal valuetype ConsoleApplication1.Foo Bar = int32(0)
.field public static literal valuetype ConsoleApplication1.Foo Baz = int32(1)
} // end of class ConsoleApplication1.Foo
т.е. перечисление Foo
реализовано в виде запечатанного класса, который заключает в себе int32
с именем value__
- дополнительное поле, которое вы видите.
Стоит отметить, что он также наследует от System.Enum
, который также имеет дополнительные (статические) поля.